Freigeben über


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.SqlClientund 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 TransactionScopefinden Sie unter Verwenden von System.Transactions.