Partager via


Promotion des transactions

S'applique à :SQL Server

La promotion des transactions décrit une transaction locale légère qui peut être promue automatiquement en une transaction entièrement distribuable si nécessaire. Lorsqu'une procédure stockée managée est appelée au sein d'une transaction de base de données sur le serveur, le CLR s'exécute dans le contexte d'une transaction locale. Si vous ouvrez une connexion à un serveur distant au sein d’une transaction de base de données, la connexion au serveur distant est inscrite dans la transaction distribuée, et la transaction locale est automatiquement promue vers une transaction distribuée.

Par conséquent, la promotion des transactions réduit la surcharge des transactions distribuées en reportant la création d’une transaction distribuée jusqu’à ce qu’elle soit nécessaire. La promotion des transactions est automatique si elle a été activée à l’aide du mot clé Enlist et ne nécessite pas d’intervention du développeur. Le fournisseur de données .NET Framework pour SQL Server prend en charge la promotion des transactions, gérée par le biais des classes de l’espace de noms .NET Framework System.Data.SqlClient.

Mot clé Enlist

La propriété ConnectionString d’un objet SqlConnection prend en charge le mot clé Enlist, qui indique si System.Data.SqlClient détecte les contextes transactionnels et inscrit automatiquement la connexion dans une transaction distribuée. Si le mot clé est défini avec la valeur true (valeur par défaut), la connexion est automatiquement inscrite dans le contexte de transaction actif du thread d'ouverture. Si ce mot clé a la valeur false, la connexion SqlClient n’interagit pas avec une transaction distribuée. Si Enlist n’est pas spécifié dans la chaîne de connexion, la connexion est automatiquement inscrite dans une transaction distribuée si une transaction distribuée est détectée au moment de l’ouverture de la connexion.

Transactions distribuées

Les transactions distribuées consomment en général d'importantes ressources système. Microsoft Distributed Transaction Coordinator (MS DTC) gère ces transactions et intègre tous les gestionnaires de ressources accessibles dans ces transactions. La promotion des transactions, en revanche, est une forme spéciale d’une transaction System.Transactions qui délègue efficacement le travail à une transaction SQL Server simple. System.Transactions, System.Data.SqlClientet SQL Server coordonnent le travail impliqué dans la gestion de la transaction, en le faisant passer à une transaction distribuée complète en fonction des besoins.

L’avantage de l’utilisation de la promotion des transactions est que lorsqu’une connexion est ouverte avec une transaction active TransactionScope et qu’aucune autre connexion n’est ouverte, la transaction est validée comme une transaction légère, plutôt que d’entraîner la surcharge supplémentaire d’une transaction distribuée complète. Pour plus d’informations sur TransactionScope, consultez Utiliser System.Transactions.