Delen via


Transactiepromotie

van toepassing op:SQL Server-

Transactie promotie beschrijft een lichtgewicht, lokale transactie die indien nodig automatisch kan worden gepromoveerd naar een volledig distribueerbare transactie. Wanneer een beheerde opgeslagen procedure wordt aangeroepen binnen een databasetransactie op de server, wordt de CLR-code (Common Language Runtime) uitgevoerd in de context van een lokale transactie. Als u een verbinding opent met een externe server binnen een databasetransactie, wordt de verbinding met de externe server opgenomen in de gedistribueerde transactie en wordt de lokale transactie automatisch gepromoveerd naar een gedistribueerde transactie.

Transactiepromotie minimaliseert dus de overhead van gedistribueerde transacties door het maken van een gedistribueerde transactie uit te stellen totdat deze nodig is. Transactiepromotie wordt automatisch uitgevoerd als deze is ingeschakeld met behulp van het trefwoord Enlist en geen tussenkomst van de ontwikkelaar vereist. De .NET Framework-gegevensprovider voor SQL Server biedt ondersteuning voor transactiepromotie, verwerkt via de klassen in de .NET Framework-System.Data.SqlClient naamruimte.

Het trefwoord Enlist

De eigenschap ConnectionString van een SqlConnection-object ondersteunt het trefwoord Enlist, waarmee wordt aangegeven of System.Data.SqlClient transactionele contexten detecteert en de verbinding automatisch in een gedistribueerde transactie inschrijft. Als dit trefwoord is ingesteld op true (de standaardinstelling), wordt de verbinding automatisch opgenomen in de huidige transactiecontext van de openingsthread. Als dit trefwoord is ingesteld op onwaar, communiceert de SqlClient verbinding niet met een gedistribueerde transactie. Als Enlist niet is opgegeven in de verbindingsreeks, wordt de verbinding automatisch in een gedistribueerde transactie opgenomen als er een wordt gedetecteerd op het moment dat de verbinding wordt geopend.

Gedistribueerde transacties

Gedistribueerde transacties verbruiken doorgaans aanzienlijke systeembronnen. Microsoft Distributed Transaction Coordinator (MS DTC) beheert dergelijke transacties en integreert alle resourcemanagers die in deze transacties worden geopend. Transactiepromotie is daarentegen een speciale vorm van een System.Transactions transactie die het werk effectief delegeert aan een eenvoudige SQL Server-transactie. System.Transactions, System.Data.SqlClienten SQL Server coördineren het werk dat betrokken is bij het verwerken van de transactie, en promoveren deze naar een volledige gedistribueerde transactie, indien nodig.

Het voordeel van het gebruik van transactiepromotie is dat wanneer een verbinding wordt geopend met een actieve TransactionScope transactie en er geen andere verbindingen worden geopend, de transactie doorvoert als een lichtgewicht transactie in plaats van de extra overhead van een volledige gedistribueerde transactie. Zie System.Transactions gebruikenvoor meer informatie over TransactionScope.