使用 SQL Server 默认结果集
适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)
默认的 ODBC 游标属性包括:
SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_CONCURRENCY, SQL_CONCUR_READ_ONLY, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_ARRAY_SIZE, 1, SQL_IS_INTEGER);
每当这些属性设置为默认值时,SQL Server Native Client ODBC 驱动程序将使用SQL Server默认结果集。 默认结果集可用于SQL Server支持的任何 SQL 语句,并且是将整个结果集传输到客户端的最有效方法。
SQL Server 2005 (9.x) 引入了对多个活动结果集的支持, (MARS) ;应用程序现在每个连接可以有多个活动默认结果集。 默认情况下未启用 MARS。
在 SQL Server 2005 (9.x) 之前,默认结果集不支持同一连接上的多个活动语句。 对连接执行 SQL 语句后,服务器不接受来自该连接上的客户端的命令(取消结果集剩余内容的请求除外),直到结果集中的所有行均处理完毕。 若要取消部分处理的结果集的其余部分,请调用 SQLCloseCursor 或 SQLFreeStmt ,并将 fOption 参数设置为 SQL_CLOSE。 若要完成部分处理的结果集并测试是否存在另一个结果集,请调用 SQLMoreResults。 如果 ODBC 应用程序在完全处理默认结果集之前尝试对连接句柄执行命令,则调用将生成SQL_ERROR并且对 SQLGetDiagRec 的调用将返回:
szSqlState: "HY000", pfNativeError: 0
szErrorMsg: "[Microsoft][SQL Server Native Client]
Connection is busy with results for another hstmt."
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈