Cursores de solo avance rápido (ODBC)
Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)
Cuando se conecta a una instancia de SQL Server, el controlador ODBC de SQL Server Native Client admite optimizaciones de rendimiento para cursores de solo avance y de solo lectura. Los cursores de solo avance rápido se implementan internamente mediante el controlador y el servidor de un modo muy similar a los conjuntos de resultados predeterminados. Además de presentar un alto rendimiento, los cursores de solo avance rápido también presentan estas características:
SQLGetData no se admite. Las columnas del conjunto de resultados deben estar enlazadas a variables de programa.
El servidor cierra automáticamente el cursor cuando se detecta el final del cursor. La aplicación todavía debe llamar a SQLCloseCursor o SQLFreeStmt(SQL_CLOSE), pero el controlador no tiene que enviar la solicitud de cierre al servidor. De esta forma, se ahorra un viaje de ida y vuelta (round trip) de la red al servidor.
La aplicación solicita cursores de solo avance rápido mediante el atributo de instrucciones específico del controlador SQL_SOPT_SS_CURSOR_OPTIONS. Cuando se establece en SQL_CO_FFO, los cursores de solo avance rápido se habilitan sin captura automática. Cuando se establece en SQL_CO_FFO_AF, también se habilita la opción de captura automática. Para obtener más información sobre la captura automática, consulte Uso de autofetch con cursores ODBC.
Los cursores de solo avance rápido con captura automática pueden usarse para recuperar un pequeño conjunto de resultados con solo un viaje de ida y vuelta (round trip) al servidor. En estos pasos, n es el número de filas que se van a devolver:
Establezca SQL_SOPT_SS_CURSOR_OPTIONS en SQL_CO_FFO_AF.
Establezca SQL_ATTR_ROW_ARRAY_SIZE en n + 1.
Enlace las columnas de resultado a matrices de n + 1 elementos (para ser seguros si se capturan realmente n + 1 filas).
Abra el cursor con SQLExecDirect o SQLExecute.
Si el estado devuelto es SQL_SUCCESS, llame a SQLFreeStmt o SQLCloseCursor para cerrar el cursor. Todos los datos de las filas estarán en las variables de programa enlazadas.
Con estos pasos, SQLExecDirect o SQLExecute envía una solicitud abierta de cursor con la opción autofetch habilitada. En esa única solicitud del cliente, el servidor:
Abre el cursor.
Genera el conjunto de resultados y envía las filas al cliente.
Dado que el tamaño del conjunto de filas se estableció en 1 más el número de filas del conjunto de resultados, el servidor detecta el final del cursor y cierra el cursor.