Exécution de transactions dans ODBC

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

Important

SQL Server Native Client (souvent abrégé en SNAC) a été supprimé dans SQL Server 2022 (16.x) et SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI ou SQLNCLI11) et le fournisseur Microsoft OLE DB pour SQL Server (SQLOLEDB) hérité ne sont pas recommandés dans les nouveaux développements. Utilisez à la place le nouveau Microsoft OLE DB Driver (MSOLEDBSQL) pour SQL Server ou le Microsoft ODBC Driver for SQL Server le plus récent. Pour SQLNCLI fourni en tant que composant du moteur de base de données SQL Server (versions 2012 à 2019), consultez cette exception de support du cycle de vie.

Les transactions dans ODBC sont gérées connexion par connexion. Lorsqu'une application termine une transaction, elle valide ou restaure tout le travail effectué par le biais de tous les handles d'instruction sur cette connexion. Pour valider ou restaurer une transaction, les applications doivent appeler SQLEndTran au lieu de soumettre une instruction COMMIT ou ROLLBACK.

Une application appelle SQLSetConnectAttr pour basculer entre les deux modes ODBC de gestion des transactions :

  • Mode de validation automatique

    Chaque instruction est validée automatiquement lorsqu'elle est effectuée avec succès. Lorsque vous utilisez le mode de validation automatique, aucune autre fonction de gestion des transactions n'est requise.

  • Mode de validation manuelle

    Toutes les instructions exécutées sont incluses dans la même transaction jusqu'à ce qu'elle soit arrêtée spécifiquement en appelant SQLEndTran.

Le mode de validation automatique est le mode de gestion par défaut des transactions pour ODBC. Lorsqu'une connexion est établie, elle est en mode de validation automatique jusqu'à ce que SQLSetConnectAttr soit appelé pour basculer en mode de validation manuelle en désactivant le mode de validation automatique. Lorsqu'une application désactive la validation automatique, l'instruction suivante envoyée à la base de données démarre une transaction. La transaction reste ensuite active jusqu'à ce que l'application appelle SQLEndTran avec les options SQL_COMMIT ou SQL_ROLLBACK. La commande envoyée à la base de données après SQLEndTran démarre la transaction suivante.

Si une application bascule du mode de validation manuelle au mode de validation automatique, le pilote valide toutes les transactions actuellement ouvertes sur la connexion.

Les applications ODBC ne doivent pas utiliser d'instructions de transaction Transact-SQL telles que BEGIN TRANSACTION, COMMIT TRANSACTION ou ROLLBACK TRANSACTION, car cela peut provoquer un comportement indéterminé dans le pilote. Une application ODBC doit s'exécuter en mode de validation automatique et ne doit pas utiliser les instructions ni les fonctions de gestion des transactions, ou elle doit s'exécuter en mode de validation manuelle et utiliser la fonction ODBC SQLEndTran pour valider ou restaurer des transactions.

Voir aussi

Exécution de transactions (ODBC)