Transaktionsaktionsauferufung
Gilt für:SQL Server
Die Transaktionshöherstufung besteht darin, eine leichtgewichtige lokale Transaktion bei Bedarf automatisch zu einer vollständig verteilbaren Transaktion umzuwandeln. Wird in einer Datenbanktransaktion auf dem Server eine verwaltete gespeicherte Prozedur aufgerufen, wird der CLR-Code (Common Language Runtime, CLR) im Kontext einer lokalen Transaktion ausgeführt. Wenn Sie eine Verbindung mit einem Remoteserver innerhalb einer Datenbanktransaktion öffnen, wird die Verbindung mit dem Remoteserver in die verteilte Transaktion aufgenommen, und die lokale Transaktion wird automatisch zu einer verteilten Transaktion heraufgestuft.
Die Transaktionsaufstufung minimiert also den Aufwand für verteilte Transaktionen, indem die Erstellung einer verteilten Transaktion zurückverzögert wird, bis sie benötigt wird. Die Transaktionsheraufstufung erfolgt automatisch, wenn sie mithilfe des schlüsselworts Enlist
aktiviert wurde und kein Eingreifen des Entwicklers erforderlich ist. Der .NET Framework-Datenanbieter für SQL Server bietet Unterstützung für die Transaktionsaufstufung, die über die Klassen im .NET Framework System.Data.SqlClient
Namespace verarbeitet wird.
Das Schlüsselwort "Enlist"
Die ConnectionString
-Eigenschaft eines SqlConnection
-Objekts unterstützt das Enlist
Schlüsselwort, das angibt, ob System.Data.SqlClient
Transaktionskontexte erkennt und die Verbindung automatisch in einer verteilten Transaktion auflistet. Wenn für dieses Schlüsselwort true festgelegt wird, wird die Verbindung automatisch im aktuellen Transaktionskontext des öffnenden Threads eingetragen. Wenn dieses Schlüsselwort auf "false" festgelegt ist, interagiert die SqlClient
Verbindung nicht mit einer verteilten Transaktion. Wenn Enlist
in der Verbindungszeichenfolge nicht angegeben ist, wird die Verbindung automatisch in einer verteilten Transaktion aufgelistet, wenn zum Zeitpunkt des Öffnens der Verbindung eine erkannt wird.
Verteilte Transaktionen
Verteilte Transaktionen nehmen normalerweise beträchtliche Systemressourcen in Anspruch. Microsoft Distributed Transaction Coordinator (MS DTC) verwaltet solche Transaktionen und integriert alle Ressourcenmanager, auf die in diesen Transaktionen zugegriffen wird. Die Transaktionsheraufufung ist dagegen eine spezielle Form einer System.Transactions
Transaktion, die die Arbeit effektiv an eine einfache SQL Server-Transaktion delegiert.
System.Transactions
, System.Data.SqlClient
und SQL Server koordinieren die Arbeit, die bei der Abwicklung der Transaktion beteiligt ist, und fördern sie bei Bedarf auf eine vollständige verteilte Transaktion.
Der Vorteil der Verwendung der Transaktionsförderung besteht darin, dass die Transaktion, wenn eine Verbindung mit einer aktiven TransactionScope
Transaktion geöffnet wird, und keine anderen Verbindungen geöffnet werden, die Transaktion als einfache Transaktion commitsiert, anstatt den zusätzlichen Aufwand einer vollständig verteilten Transaktion zu verursachen. Weitere Informationen zu TransactionScope
finden Sie unter Verwenden von System.Transactions.