Transaktionshöjning
gäller för:SQL Server
Transaktion befordran beskriver en enkel, lokal transaktion som automatiskt kan befordras till en helt distribuerbar transaktion efter behov. När en hanterad lagrad procedur anropas i en databastransaktion på servern körs CLR-koden (Common Language Runtime) i kontexten för en lokal transaktion. Om du öppnar en anslutning till en fjärrserver i en databastransaktion anslutningen till fjärrservern i den distribuerade transaktionen och den lokala transaktionen befordras automatiskt till en distribuerad transaktion.
Därför minimerar transaktionshöjningen omkostnaderna för distribuerade transaktioner genom att skjuta upp skapandet av en distribuerad transaktion tills den behövs. Transaktionshöjningen är automatisk om den har aktiverats med nyckelordet Enlist
och inte kräver åtgärder från utvecklaren. .NET Framework-dataprovidern för SQL Server tillhandahåller stöd för transaktionshöjning som hanteras via klasserna i namnområdet .NET Framework System.Data.SqlClient
.
Nyckelordet Enlist
Egenskapen ConnectionString
för ett SqlConnection
-objekt stöder nyckelordet Enlist
, vilket anger om System.Data.SqlClient
identifierar transaktionskontexter och automatiskt registrerar anslutningen i en distribuerad transaktion. Om det här nyckelordet är inställt på sant (standardvärdet) registreras anslutningen automatiskt i den aktuella transaktionskontexten för öppningstråden. Om det här nyckelordet är inställt på false interagerar inte SqlClient
-anslutningen med en distribuerad transaktion. Om Enlist
inte anges i anslutningssträngen registreras anslutningen automatiskt i en distribuerad transaktion om en identifieras när anslutningen öppnas.
Distribuerade transaktioner
Distribuerade transaktioner förbrukar vanligtvis betydande systemresurser. Microsoft Distributed Transaction Coordinator (MS DTC) hanterar sådana transaktioner och integrerar alla resurshanterare som används i dessa transaktioner. Transaktionshöjning är å andra sidan en särskild form av en System.Transactions
transaktion som effektivt delegerar arbetet till en enkel SQL Server-transaktion.
System.Transactions
, System.Data.SqlClient
och SQL Server samordnar arbetet med att hantera transaktionen och befordrar den till en fullständig distribuerad transaktion efter behov.
Fördelen med att använda transaktionshöjning är att när en anslutning öppnas med en aktiv TransactionScope
transaktion, och inga andra anslutningar öppnas, checkar transaktionen in som en enkel transaktion i stället för att medföra extra kostnader för en fullständig distribuerad transaktion. Mer information om TransactionScope
finns i Use System.Transactions.