Utilizar conjuntos de resultados predeterminados de SQL Server
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Los atributos de cursor ODBC predeterminados son:
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);
Cada vez que estos atributos se establecen en sus valores predeterminados, el controlador ODBC de SQL Server Native Client usa un conjunto de resultados predeterminado de SQL Server. Los conjuntos de resultados predeterminados se pueden usar para cualquier instrucción SQL compatible con SQL Server y son el método más eficaz de transferir un conjunto de resultados completo al cliente.
SQL Server 2005 (9.x) introdujo compatibilidad con varios conjuntos de resultados activos (MARS); Las aplicaciones ahora pueden tener más de un conjunto de resultados predeterminado activo por conexión. MARS no está habilitado de forma predeterminada.
Antes de SQL Server 2005 (9.x), los conjuntos de resultados predeterminados no admitieron varias instrucciones activas en la misma conexión. Después de ejecutar una instrucción SQL en una conexión, el servidor no acepta comandos (excepto una solicitud para cancelar el resto del conjunto de resultados) del cliente en esa conexión hasta que se hayan procesado todas las filas del conjunto de resultados. Para cancelar el resto de un conjunto de resultados parcialmente procesado, llame a SQLCloseCursor o SQLFreeStmt con el parámetro fOption establecido en SQL_CLOSE. Para finalizar un conjunto de resultados procesado parcialmente y probar la presencia de otro conjunto de resultados, llame a SQLMoreResults. Si una aplicación ODBC intenta un comando en un identificador de conexión antes de que se haya procesado completamente un conjunto de resultados predeterminado, la llamada genera SQL_ERROR y una llamada a SQLGetDiagRec devuelve:
szSqlState: "HY000", pfNativeError: 0
szErrorMsg: "[Microsoft][SQL Server Native Client]
Connection is busy with results for another hstmt."