Condividi tramite


Promozione delle transazioni

Si applica a:SQL Server

La promozione delle transazioni descrive una transazione locale leggera che può essere promossa automaticamente in una transazione completamente distribuibile in base alle esigenze. Quando una stored procedure gestita viene richiamata all'interno di una transazione del database sul server, il codice CLR (Common Language Runtime) viene eseguito nel contesto di una transazione locale. Se all'interno di una transazione del database viene aperta una connessione a un server remoto, la connessione al server remoto viene inserita nella transazione distribuita e la transazione locale viene promossa automaticamente a una transazione distribuita. La promozione delle transazioni riduce pertanto l'overhead delle transazioni distribuite posticipando la creazione di una transazione distribuita finché non si rende necessaria. La promozione delle transazioni è automatica, se è stata abilitata usando la parola chiave Enlist e non richiede l'intervento da parte dello sviluppatore. Il provider di dati .NET Framework per SQL Server fornisce supporto per la promozione delle transazioni, gestita tramite le classi nello spazio dei nomi System.Data.SqlClient di .NET Framework.

Parola chiave Enlist

La proprietà ConnectionString di un oggetto SqlConnection supporta la parola chiave Enlist , che indica se System.Data.SqlClient rileva contesti transazionali e inserisce automaticamente la connessione in una transazione distribuita. Se questa parola chiave viene impostata su true (impostazione predefinita), la connessione viene inserita automaticamente nel contesto della transazione corrente del thread di apertura. Se invece la parola chiave viene impostata su false, la connessione SqlClient non interagisce con una transazione distribuita. Se Enlist non è specificato nella stringa di connessione, la connessione viene automaticamente inserita in una transazione distribuita se viene rilevata una alla volta che la connessione viene aperta.

Transazioni distribuite

Le transazioni distribuite utilizzano in genere un numero elevato di risorse di sistema. Microsoft Distributed Transaction Coordinator (MS DTC) gestisce tali transazioni e integra tutti i gestori di risorse accessibili in queste transazioni. La promozione delle transazioni, d'altra parte, è una forma speciale di una transazione System.Transactions che delega in modo efficace il lavoro a una semplice transazione SQL Server. System.Transactions, System.Data.SqlClient e SQL Server coordinare il lavoro coinvolto nella gestione della transazione, promuovendolo in una transazione distribuita completa in base alle esigenze.

Il vantaggio dell'uso della promozione delle transazioni è che quando una connessione viene aperta con una transazione TransactionScope attiva e non vengono aperte altre connessioni, il commit della transazione viene eseguito come transazione leggera, anziché incorrere nel sovraccarico aggiuntivo di una transazione distribuita completa. Per altre informazioni su TransactionScope, vedere Uso di System.Transactions.

Vedere anche

Integrazione con CLR e transazioni