Share via


Biblioteca de cursores ODBC

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Algunos controladores ODBC solo admiten la configuración predeterminada del cursor; estos controladores tampoco admiten operaciones de cursor posicionadas, como SQLSetPos. La biblioteca de cursores ODBC es un componente de Microsoft Data Access Components (MDAC) que se utiliza para implementar cursores de bloque o estáticos en un controlador que normalmente no los admite. La biblioteca de cursores también implementa instrucciones UPDATE y DELETE posicionadas y SQLSetPos para los cursores que crea.

La biblioteca de cursores ODBC se implementa como un nivel entre el Administrador de controladores ODBC y un controlador ODBC. Si se carga la biblioteca de cursores ODBC, el Administrador de controladores ODBC enruta todos los comandos relacionados con cursor a la biblioteca de cursores en lugar del controlador. Para implementar un cursor, la biblioteca de cursores implementa un cursor que captura el conjunto completo de resultados del controlador subyacente y lo almacena en la caché del cliente. Al utilizar la biblioteca de cursores ODBC, la aplicación se limita a la funcionalidad del cursor de la biblioteca de cursores; la aplicación no dispone de compatibilidad con funcionalidad adicional del cursor incluida en el controlador subyacente.

No es necesario usar la biblioteca de cursores ODBC con el controlador ODBC de SQL Server Native Client porque el propio controlador admite más funcionalidad de cursor que la biblioteca de cursores ODBC. La única razón para usar la biblioteca de cursores ODBC con el controlador ODBC de SQL Server Native Client es porque el controlador implementa su compatibilidad con cursores de cursor a través de cursores de servidor y los cursores de servidor no admiten todas las instrucciones SQL. Considere la posibilidad de utilizar la biblioteca de cursores ODBC siempre que necesite disponer de un cursor estático con procedimientos almacenados, lotes o instrucciones SQL que contengan COMPUTE, COMPUTE BY, FOR BROWSE o INTO. Sin embargo, debe prestar atención si utiliza la biblioteca de cursores, ya que almacena en la memoria caché del cliente el conjunto de resultados completo, lo que puede consumir grandes cantidades de memoria y reducir el rendimiento.

Una aplicación invoca la biblioteca de cursores por conexión mediante SQLSetConnectAttr para establecer el atributo de conexión SQL_ATTR_ODBC_CURSORS antes de conectarse a un origen de datos. SQL_ATTR_ODBC_CURSORS se establece en uno de tres valores:

SQL_CUR_USE_ODBC
Cuando esta opción se establece con el controlador ODBC de SQL Server Native Client, la biblioteca de cursores ODBC invalida la compatibilidad con cursores nativos del controlador ODBC de SQL Server Native Client. En la conexión solo se pueden utilizar los tipos de cursor que admite la biblioteca de cursores; no se pueden utilizar cursores de servidor.

SQL_CUR_USE_DRIVER
Cuando se establece esta opción, se pueden usar todos los cursores nativos para el controlador ODBC de SQL Server Native Client para la conexión. No se puede inicializar la biblioteca de cursores ODBC. Todos los cursores se implementan como cursores de servidor.

SQL_CUR_USE_IF_NEEDED
Cuando se establece esta opción, el efecto es el mismo que SQL_CUR_USE_DRIVER cuando se usa con el controlador ODBC de SQL Server Native Client. En el momento de la conexión, el Administrador de controladores ODBC comprueba si el controlador ODBC al que se está conectando admite la opción SQL_FETCH_PRIOR de SQLFetchScroll. Si el controlador no admite la opción, el Administrador de controladores ODBC carga la biblioteca de cursores ODBC. Si el controlador admite la opción, el Administrador de controladores ODBC no carga la biblioteca de cursores ODBC y la aplicación utiliza la compatibilidad nativa del controlador. Dado que el controlador ODBC de SQL Server Native Client admite SQL_FETCH_PRIOR, el Administrador de controladores ODBC no carga la biblioteca de cursores ODBC.

La biblioteca de cursores permite a las aplicaciones utilizar varias instrucciones activas en una conexión, así como cursores desplazables y actualizables. La biblioteca de cursores debe estar cargada para admitir esta funcionalidad. Use SQLSetConnectAttr para especificar cómo se debe usar la biblioteca de cursores y SQLSetStmtAttr para especificar el tipo de cursor, la simultaneidad y el tamaño del conjunto de filas.

Consulte también

Cómo se implementan los cursores