Bibliothèque de curseurs ODBC
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Certains pilotes ODBC prennent uniquement en charge les paramètres de curseur par défaut ; ces pilotes ne prennent pas en charge les opérations de curseur positionnées, telles que SQLSetPos. La bibliothèque de curseurs ODBC est un composant de MDAC (Microsoft Data Access Components) qui permet d'implémenter des curseurs de bloc ou statiques sur un pilote qui ne les prend normalement pas en charge. La bibliothèque de curseurs implémente également les instructions UPDATE et DELETE positionnées et SQLSetPos pour les curseurs qu’elle crée.
La bibliothèque de curseurs ODBC est implémentée comme une couche entre le gestionnaire de pilotes ODBC et un pilote ODBC. Si la bibliothèque de curseurs ODBC est chargée, le Gestionnaire de pilote ODBC route toutes les commandes connexes à curseur à la bibliothèque de curseurs au lieu du pilote. La bibliothèque de curseurs implémente un curseur en extrayant l'intégralité du jeu de résultats du pilote sous-jacent et en mettant en cache le jeu de résultats sur le client. Lors de l'utilisation de la bibliothèque de curseurs ODBC, l'application est limitée aux fonctionnalités de curseur de la bibliothèque de curseurs ; toute prise en charge à des fonctionnalités de curseur supplémentaires dans le pilote sous-jacent n'est pas accessible à l'application.
Il n’est pas nécessaire d’utiliser la bibliothèque de curseurs ODBC avec le pilote ODBC SQL Server Native Client, car le pilote lui-même prend en charge plus de fonctionnalités de curseur que la bibliothèque de curseurs ODBC. La seule raison d’utiliser la bibliothèque de curseurs ODBC avec le pilote ODBC SQL Server Native Client est que le pilote implémente sa prise en charge du curseur par le biais de curseurs serveur et que les curseurs serveur ne prennent pas en charge toutes les instructions SQL. Chaque fois qu'il est nécessaire d'avoir un curseur statique avec des procédures stockées, des lots ou des instructions SQL contenant COMPUTE, COMPUTE BY, FOR BROWSE ou INTO, songez à utiliser la bibliothèque de curseurs ODBC. Toutefois, utilisez-la avec précaution car elle met en cache l'intégralité du jeu de résultats sur le client, ce qui peut consommer de grandes quantités de mémoire et ralentir les performances.
Une application appelle la bibliothèque de curseurs sur une base de connexion par connexion à l’aide de SQLSetConnectAttr pour définir l’attribut de connexion SQL_ATTR_ODBC_CURSORS avant de se connecter à une source de données. SQL_ATTR_ODBC_CURSORS prend l'une des trois valeurs suivantes :
SQL_CUR_USE_ODBC
Lorsque cette option est définie avec le pilote ODBC SQL Server Native Client, la bibliothèque de curseurs ODBC remplace la prise en charge du curseur natif du pilote ODBC SQL Server Native Client. Seuls les types de curseurs pris en charge par la bibliothèque de curseurs peuvent être utilisés pour la connexion ; les curseurs côté serveur ne peuvent pas être utilisés.
SQL_CUR_USE_DRIVER
Lorsque cette option est définie, tout le curseur prend en charge nativement le pilote ODBC SQL Server Native Client peut être utilisé pour la connexion. La bibliothèque de curseurs ODBC ne peut pas être utilisée. Tous les curseurs sont implémentés en tant que curseurs côté serveur.
SQL_CUR_USE_IF_NEEDED
Lorsque cette option est définie, l’effet est identique à SQL_CUR_USE_DRIVER lorsqu’il est utilisé avec le pilote ODBC SQL Server Native Client. Au moment de la connexion, le Gestionnaire de pilotes ODBC teste si le pilote ODBC connecté prend en charge l’option SQL_FETCH_PRIOR de SQLFetchScroll. Si le pilote ne prend pas en charge l'option, le gestionnaire de pilotes ODBC charge la bibliothèque de curseurs ODBC. Si le pilote prend en charge l'option, le gestionnaire de pilotes ODBC ne charge pas la bibliothèque de curseurs ODBC et l'application utilise la prise en charge native du pilote. Étant donné que le pilote ODBC SQL Server Native Client prend en charge SQL_FETCH_PRIOR, le Gestionnaire de pilotes ODBC ne charge pas la bibliothèque de curseurs ODBC.
La bibliothèque de curseurs permet aux applications d'utiliser plusieurs instructions actives sur une connexion, ainsi que des curseurs déroulants pouvant être mis à jour. La bibliothèque de curseurs doit être chargée pour prendre en charge cette fonctionnalité. Utilisez SQLSetConnectAttr pour spécifier la façon dont la bibliothèque de curseurs doit être utilisée et SQLSetStmtAttr pour spécifier le type de curseur, la concurrence et la taille de l’ensemble de lignes.