Utilizar conjuntos de resultados predeterminados de SQL ServerUsing SQL Server Default Result Sets

SE APLICA A: síSQL Server síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Los atributos de cursor ODBC predeterminados son:The default ODBC cursor attributes are:

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);  

Siempre que estos atributos se establecen en sus valores predeterminados, el SQL ServerSQL Server controlador ODBC de Native Client utiliza un SQL ServerSQL Server conjunto de resultados predeterminado.Whenever these attributes are set to their defaults, the SQL ServerSQL Server Native Client ODBC driver uses a SQL ServerSQL Server default result set. Los conjuntos de resultados predeterminados se pueden utilizar para cualquier instrucción SQL admitida por SQL ServerSQL Server y son el método más eficaz de transferir un conjunto de resultados completo al cliente.Default result sets can be used for any SQL statement supported by SQL ServerSQL Server, and are the most efficient method of transferring an entire result set to the client.

SQL Server 2005 (9.x)SQL Server 2005 (9.x) presentó la compatibilidad para conjuntos de resultados activos múltiples (MARS); las aplicaciones ahora pueden tener más de un conjunto de resultados predeterminado activo por conexión.introduced support for multiple active result sets (MARS); applications can now have more than one active default result set per connection. MARS no está habilitado de forma predeterminada.MARS is not enabled by default.

Antes de SQL Server 2005 (9.x)SQL Server 2005 (9.x), los conjuntos de resultados predeterminados no admitían varias instrucciones activas en la misma conexión.Before SQL Server 2005 (9.x)SQL Server 2005 (9.x), default result sets did not support multiple active statements on the same connection. Una vez ejecutada 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 han procesado todas las filas del conjunto de resultados.After an SQL statement is executed on a connection, the server does not accept commands (except a request to cancel the rest of the result set) from the client on that connection until all the rows in the result set have been processed. Para cancelar el resto del conjunto de resultados procesado parcialmente, llame a SQLCloseCursor o SQLFreeStmt con el fOption parámetro establecido en SQL_CLOSE.To cancel the remainder of a partially processed result set, call SQLCloseCursor or SQLFreeStmt with the fOption parameter set to SQL_CLOSE. Para terminar un conjunto de resultados procesado parcialmente y comprobar la presencia de otro conjunto de resultados, llame a SQLMoreResults.To finish a partially processed result set and test for the presence of another result set, call SQLMoreResults. Si una aplicación ODBC intenta ejecutar un comando en un identificador de conexión antes de que se ha procesado completamente el conjunto de resultados predeterminado, la llamada genera SQL_ERROR y una llamada a SQLGetDiagRec devuelve:If an ODBC application attempts a command on a connection handle before a default result set has been completely processed, the call generates SQL_ERROR and a call to SQLGetDiagRec returns:

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

Vea tambiénSee Also

Cómo se implementan los cursoresHow Cursors Are Implemented