sys.dm_tran_current_transactions (Transact-SQL)

Gilt für: SQL Server (alle unterstützten Versionen) Azure SQL Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Gibt eine einzelne Zeile zurück, in der die Statusinformationen der Transaktion in der aktuellen Sitzung angezeigt werden.

Hinweis

Um dies von Azure Synapse Analytics- oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_tran_current_transaction. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Syntax

  
sys.dm_tran_current_transaction  

Zurückgegebene Tabelle

Spaltenname Datentyp BESCHREIBUNG
transaction_id bigint Transaktions-ID der aktuellen Momentaufnahme.
transaction_sequence_num bigint Sequenznummer der Transaktion, die die Datensatzversion generiert.
transaction_is_snapshot bit Der Momentaufnahmeisolationsstatus. Dieser Wert beträgt 1, wenn die Transaktion unter der Momentaufnahmeisolation gestartet wird. Anderenfalls ist der Wert 0.
first_snapshot_sequence_num bigint Niedrigste Transaktionssequenznummer der Transaktionen, die beim Erstellen einer Momentaufnahme aktiviert waren. Bei der Ausführung einer Momentaufnahmetransaktion wird eine Momentaufnahme aller zu diesem Zeitpunkt aktiven Transaktionen erstellt. Für NonSnapshot-Transaktionen wird in dieser Spalte 0 angezeigt.
last_transaction_sequence_num bigint Globale Sequenznummer. Dieser Wert stellt die letzte Transaktionssequenznummer dar, die vom System generiert wurde.
first_useful_sequence_num bigint Globale Sequenznummer. Dieser Wert stellt die älteste Transaktionssequenznummer der Transaktion dar, die über Zeilenversionen verfügt, die im Versionsspeicher beibehalten werden müssen. Zeilenversionen, die von früheren Transaktionen erstellt wurden, können entfernt werden.
pdw_node_id int Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW)

Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet.

Berechtigungen

Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE-Berechtigung erforderlich.

Für Standard-, S0- und S1-Dienstziele von SQL-Datenbank sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators, des Azure Active Directory-Administrators oder die Mitgliedschaft in der ##MS_ServerStateReader##Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##-Serverrolle erforderlich.

Beispiele

Im folgenden Beispiel wird ein Testszenario verwendet, in dem vier gleichzeitige Transaktionen, die jeweils durch eine Transaktionssequenznummer (XSN) identifiziert werden, in einer Datenbank ausgeführt werden, für die die Optionen ALLOW_SNAPSHOT_ISOLATION und READ_COMMITTED_SNAPSHOT auf ON festgelegt sind. Die folgenden Transaktionen werden ausgeführt:

  • XSN-57 ist ein Updatevorgang auf der serialisierbaren Isolationsstufe.

  • XSN-58 entspricht XSN-57.

  • XSN-59 ist ein Select-Vorgang auf der Momentaufnahmeisolationsstufe.

  • XSN-60 entspricht XSN-59.

Die folgende Abfrage wird im Bereich jeder Transaktion ausgeführt.

SELECT   
    transaction_id  
   ,transaction_sequence_num  
   ,transaction_is_snapshot  
   ,first_snapshot_sequence_num  
   ,last_transaction_sequence_num  
   ,first_useful_sequence_num  
  FROM sys.dm_tran_current_transaction;  

Im Folgenden wird das Ergebnis für XSN-59 aufgeführt.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9387                 59                       1                         
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
57                               61                        
  
first_useful_sequence_num  
-------------------------  
57  

Die Ausgabe zeigt an, dass es sich bei XSN-59 um eine Momentaufnahmetransaktion handelt, die XSN-57 als die erste Transaktion verwendet, die beim Start von XSN-59 aktiviert war. Dies bedeutet, dass XSN-59 Daten liest, für die von Transaktionen, deren Transaktionssequenznummer niedriger ist als XSN-57, ein Commit ausgeführt wurde.

Im Folgenden wird das Ergebnis für XSN-57 aufgeführt.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9295                 57                       0  
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
NULL                        61  
  
first_useful_sequence_num  
-------------------------  
57  

Da XSN-57 keine Momentaufnahmetransaktion ist, weist first_snapshot_sequence_num den Wert NULL auf.

Weitere Informationen

Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit Transaktionen (Transact-SQL)