sys.dm_tran_current_snapshot (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Gibt eine virtuelle Tabelle zurück, in der alle aktiven Transaktionen zum Zeitpunkt des Starts der aktuellen Momentaufnahmetransaktion angezeigt werden. Wenn die aktuelle Transaktion keine Momentaufnahmetransaktion ist, gibt diese Funktion keine Zeilen zurück. sys.dm_tran_current_Momentaufnahme ähnelt sys.dm_tran_transactions_Momentaufnahme, mit der Ausnahme, dass sys.dm_tran_current_Momentaufnahme nur die aktiven Transaktionen für die aktuelle Momentaufnahme Transaktion zurückgibt.

Hinweis

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

Syntax

  
sys.dm_tran_current_snapshot  

Zurückgegebene Tabelle

Spaltenname Datentyp Beschreibung
transaction_sequence_num bigint Die Transaktionssequenznummer der aktiven Transaktion.
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 SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto 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.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

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 von XSN-59 ausgeführt.

SELECT   
    transaction_sequence_num  
  FROM sys.dm_tran_current_snapshot;  

Hier ist das Resultset.

transaction_sequence_num  
------------------------  
57  
58  

Die Ergebnisse zeigen an, dass XSN-57 und XSN-58 zum Zeitpunkt des Starts der Momentaufnahmetransaktion XSN-59 aktiviert waren. Das gleiche Ergebnis wird persistent gespeichert, sogar nachdem für XSN-57 und XSN-58 ein Commit oder Rollback ausgeführt wurde, bis die Momentaufnahmetransaktion fertig gestellt ist.

Die gleiche Abfrage wird im Bereich von XSN-60 ausgeführt.

Hier ist das Resultset.

transaction_sequence_num  
------------------------  
57  
58  
59  

Die Ausgabe für XSN-60 enthält die gleichen Transaktionen wie für XSN-59, enthält jedoch auch XSN-59. Diese war beim Start von XSN-60 aktiv.

Weitere Informationen

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