使用 SQL Server 默认结果集

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(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 语句后,服务器不接受来自该连接上的客户端的命令(取消结果集剩余内容的请求除外),直到结果集中的所有行均处理完毕。 若要取消部分处理的结果集的其余部分,请使用 fOption 参数设置为SQL_CLOSE调用 SQLCloseCursorSQLFreeStmt 若要完成部分处理的结果集并测试是否存在另一个结果集,请调用 SQLMoreResults。 如果 ODBC 应用程序在完全处理默认结果集之前尝试对连接句柄执行命令,则调用将生成SQL_ERROR,并返回对 SQLGetDiagRec 的 调用:

szSqlState: "HY000", pfNativeError: 0  
szErrorMsg: "[Microsoft][SQL Server Native Client]  
                Connection is busy with results for another hstmt."  

另请参阅

如何实现游标