Partager via


Prise en charge des transactions dans OLE DB

Une transaction est un moyen de regrouper ou de traiter par lots une série de mises à jour vers une source de données afin que toutes les opérations réussissent et soient validées simultanément ou (si l’une d’elles échoue) aucune n’est validée et la transaction entière est restaurée. Ce processus garantit l’intégrité du résultat sur la source de données.

OLE DB prend en charge les transactions avec les trois méthodes suivantes :

Relation des sessions et des transactions

Un objet source de données unique peut créer un ou plusieurs objets de session, chacun pouvant être à l’intérieur ou à l’extérieur de l’étendue d’une transaction à un moment donné.

Lorsqu’une session n’entre pas dans une transaction, tout le travail effectué dans cette session sur le magasin de données est immédiatement validé sur chaque appel de méthode. (Il s’agit parfois d’un mode de validation automatique ou d’un mode implicite.)

Lorsqu’une session entre une transaction, tout le travail effectué dans cette session sur le magasin de données fait partie de cette transaction et est validé ou abandonné en tant qu’unité unique. (Il s’agit parfois du mode de validation manuelle.)

La prise en charge des transactions est spécifique au fournisseur. Si le fournisseur que vous utilisez prend en charge les transactions, un objet de session qui prend en charge ITransaction et ITransactionLocal peut entrer une transaction (non imbriquée). La classe Modèles OLE DB CSession prend en charge ces interfaces et est la méthode recommandée pour implémenter la prise en charge des transactions dans Visual C++.

Démarrage et fin de la transaction

Vous appelez les méthodes et Abort Commitles StartTransactionméthodes dans l’objet d’ensemble de lignes dans le consommateur.

L’appel ITransactionLocal::StartTransaction démarre une nouvelle transaction locale. Lorsque vous démarrez la transaction, les modifications imposées par les opérations ultérieures ne sont pas appliquées au magasin de données tant que vous n’avez pas validée la transaction.

Appeler ITransaction::Commit ou ITransaction::Abort mettre fin à la transaction. Commit entraîne l’application de toutes les modifications dans l’étendue de la transaction au magasin de données. Abort entraîne l’annulation de toutes les modifications dans l’étendue de la transaction et le magasin de données reste dans l’état qu’il avait avant le démarrage de la transaction.

Transactions imbriquées

Une transaction imbriquée se produit lorsque vous démarrez une nouvelle transaction locale lorsqu’une transaction active existe déjà sur la session. La nouvelle transaction est démarrée en tant que transaction imbriquée sous la transaction actuelle. Si le fournisseur ne prend pas en charge les transactions imbriquées, l’appel StartTransaction lorsqu’une transaction active est déjà effectuée sur la session retourne XACT_E_XTIONEXISTS.

Transactions distribuées

Une transaction distribuée est une transaction qui met à jour les données distribuées ; c’est-à-dire des données sur plusieurs systèmes informatiques en réseau. Si vous souhaitez prendre en charge les transactions via un système distribué, vous devez utiliser le .NET Framework plutôt que la prise en charge des transactions OLE DB.

Voir aussi

Utilisation des accesseurs