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.SqlClient
et 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.