Freigeben über


Transaktionshöherstufung

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 in der Datenbanktransaktion eine Verbindung zu einem Remoteserver geöffnet wird, wird die Verbindung in die verteilte Transaktion eingetragen, und die lokale Transaktion wird automatisch zu einer verteilten Transaktion höhergestuft. Dies bedeutet, dass durch die Transaktionhöherstufung der Verarbeitungsaufwand von verteilten Transaktionen reduziert wird, indem diese erst dann erstellt werden, wenn sie gebraucht werden. Die Transaktionshöherstufung ist automatisch, falls diese mithilfe des Enlist-Schlüsselworts aktiviert wurde und kein Eingriff seitens des Entwicklers erforderlich ist. Der .NET Framework-Datenanbieter für SQL Server bietet über die Klassen im .NET Framework-System.Data.SqlClient-Namespace Unterstützung für die Transaktionshöherstufung.

Das 'Enlist'-Schlüsselwort

Die ConnectionString-Eigenschaft eines SqlConnection-Objekts unterstützt das Enlist-Schlüsselwort, welches angibt, ob System.Data.SqlClient den Transaktionskontext erkennt und die Verbindung automatisch in eine verteilte Transaktion einträgt. Wenn für dieses Schlüsselwort true festgelegt wird, wird die Verbindung automatisch im aktuellen Transaktionskontext des öffnenden Threads eingetragen. Wenn für dieses Schlüsselwort false festgelegt wird, interagiert die SqlClient-Verbindung nicht mit einer verteilten Transaktion. Wenn das Enlist-Schlüsselwort nicht in der Verbindungszeichenfolge angegeben wird, wird die Verbindung automatisch in eine verteilte Transaktion eingetragen, falls zum Zeitpunkt des Öffnens der Verbindung eine verteilte Transaktion erkannt wurde.

Verteilte Transaktionen

Verteilte Transaktionen nehmen normalerweise beträchtliche Systemressourcen in Anspruch. Microsoft Distributed Transaction Coordinator (MS DTC) verwaltet diese Transaktionen und integriert alle Ressourcen-Manager, auf die in den Transaktionen zugegriffen wird. Andererseits handelt es sich bei der Transaktionhöherstufung um eine besondere Form der System.Transactions-Transaktion, mit der die Verarbeitung an eine einfache SQL Server-Transaktion delegiert wird. System.Transactions, System.Data.SqlClient und SQL Server koordinieren die Verarbeitung der Transaktion, um sie bei Bedarf zu einer vollständigen verteilten Transaktion höherzustufen.

Der Vorteil der Verwendung der Transaktionshöherstufung liegt darin, dass beim Öffnen einer Verbindung, die eine aktive TransactionScope-Transaktion aufweist, diese Transaktion als "leichtgewichtige" Transaktion agiert, wenn keine anderen Verbindungen geöffnet sind, anstatt als verteilte Transaktion zusätzliche Ressourcen zu verbrauchen. Weitere Informationen zu TransactionScope finden Sie unter Verwenden von 'System.Transactions'.

Siehe auch

Konzepte

CLR-Integration und Transaktionen