Partager via


Transactions explicites

Une transaction est explicite si vous définissez le début et la fin de la transaction de manière explicite.

Les applications utilisant DB-Library et les scripts Transact-SQL utilisent les instructions Transact-SQL BEGIN TRANSACTION, COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION ou ROLLBACK WORK pour définir les transactions explicites.

  • BEGIN TRANSACTION
    Indique le début d'une transaction explicite pour une connexion.

  • COMMIT TRANSACTION ou COMMIT WORK
    Permet de terminer une transaction réussie si aucune erreur ne s'est produite. Toutes les modifications de données effectuées au cours de la transaction sont enregistrées de manière permanente dans la base de données. Les ressources utilisées par la transaction sont libérées.

  • ROLLBACK TRANSACTION ou ROLLBACK WORK
    Permet d'effacer une transaction au cours de laquelle des erreurs se sont produites. Toutes les données modifiées au cours de la transaction sont restaurées dans l'état où elles étaient au début de la transaction. Les ressources utilisées par la transaction sont libérées.

Vous pouvez également utiliser les transactions explicites avec OLE DB. Appelez la méthode ITransactionLocal::StartTransaction pour démarrer une transaction. Appelez la méthode ITransaction::Commit ou ITransaction::Abort en affectant la valeur FALSE au paramètre fRetaining pour terminer la transaction sans en démarrer automatiquement une autre.

Dans ADO, utilisez la méthode BeginTrans sur un objet Connection pour démarrer une transaction explicite. Pour terminer la transaction, appelez la méthode CommitTrans ou RollbackTrans de l'objet Connection.

Dans le fournisseur managé SqlClient de ADO.NET, utilisez la méthode BeginTransaction sur un objet SqlConnection pour démarrer une transaction explicite. Pour terminer la transaction, appelez la méthode Commit() ou Rollback() sur l'objet SqlTransaction.

L'API ODBC ne prend pas en charge les transactions explicites, mais seulement les transactions en mode autocommit et implicite.

Le mode de transaction explicite est activé seulement pour la durée de la transaction. À la fin de la transaction, la connexion revient au mode de transaction sélectionné avant le début de la transaction, c'est-à-dire implicite ou autocommit.

[!REMARQUE]

Sous une session MARS (Multiple Active Result Sets), une transaction explicite démarrée à l'aide de l'instruction Transact-SQL BEGIN TRANSACTION se transforme en transaction étendue au niveau du traitement. Si cette transaction n'est ni validée ni annulée lorsque le traitement se termine, SQL Server annule automatiquement la transaction. Pour plus d'informations, consultez Contrôle des transactions (Moteur de base de données) et Transactions (Transact-SQL).