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 une connexion à un serveur distant est ouverte dans une transaction de base de données, la connexion au serveur distant est inscrite dans la transaction distribuée et la transaction locale est promue automatiquement en une transaction distribuée. Ainsi, la promotion des transactions réduit les charges mémoire des transactions distribuées en différant la création d'une transaction distribuée tant qu'elle n'est pas nécessaire. La promotion des transactions est automatique, si elle a été activée à l'aide du mot clé Enlist , et ne requiert aucune intervention du développeur. Le .NET Framework Fournisseur de données 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. S'il est défini avec 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 inscrite automatiquement dans une transaction distribuée si celle-ci est détectée au moment où la connexion est ouverte.
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 transaction est que lorsqu'une connexion est ouverte avec une transaction TransactionScope active et qu'aucune autre connexion n'est ouverte, la transaction est validée comme transaction légère, au lieu d'encourir les charges mémoire supplémentaires d'une transaction distribuée complète. Pour plus d’informations sur TransactionScope, consultez Utilisation de System.Transactions.