Share via


Utilisation de jeux de résultats SQL Server par défaut

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Les attributs de curseur ODBC par défaut sont les suivants :

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

Chaque fois que ces attributs sont définis sur leurs valeurs par défaut, le pilote ODBC SQL Server Native Client utilise un SQL Server jeu de résultats par défaut. Les jeux de résultats par défaut peuvent être utilisés pour n’importe quelle instruction SQL prise en charge par SQL Server et constituent la méthode la plus efficace de transfert d’un jeu de résultats entier vers le client.

SQL Server 2005 (9.x) a introduit la prise en charge de plusieurs jeux de résultats actifs (MARS). Les applications peuvent désormais avoir plusieurs jeux de résultats par défaut actifs par connexion. MARS n'est pas activé par défaut.

Avant SQL Server 2005 (9.x), les jeux de résultats par défaut ne prenaient pas en charge plusieurs instructions actives sur la même connexion. Une fois qu'une instruction SQL était exécutée sur une connexion, le serveur n'acceptait pas de commandes (sauf une demande d'annulation du reste du jeu de résultats) du client sur cette connexion tant que toutes les lignes du jeu de résultats n'avaient pas été traitées. Pour annuler le reste d’un jeu de résultats partiellement traité, appelez SQLCloseCursor ou SQLFreeStmt avec le paramètre fOption défini sur SQL_CLOSE. Pour terminer un jeu de résultats partiellement traité et tester la présence d’un autre jeu de résultats, appelez SQLMoreResults. Si une application ODBC tente une commande sur un handle de connexion avant qu’un jeu de résultats par défaut ait été complètement traité, l’appel génère SQL_ERROR et un appel à SQLGetDiagRec retourne :

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

Voir aussi

Comment les curseurs sont implémentés