Freigeben über


sys.dm_tran_current_transactions (Transact-SQL)

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

Syntax

sys.dm_tran_current_transaction

Zurückgegebene Tabelle

Spaltenname

Datentyp

Beschreibung

transaction_id

bigint

Transaktions-ID des aktuellen Snapshots.

transaction_sequence_num

bigint

Sequenznummer der Transaktion, die die Datensatzversion generiert.

transaction_is_snapshot

bit

Der Snapshotisolationsstatus. Dieser Wert beträgt 1, wenn die Transaktion unter der Snapshotisolation gestartet wird. Anderenfalls ist der Wert 0.

first_snapshot_sequence_num

bigint

Niedrigste Transaktionssequenznummer der Transaktionen, die beim Erstellen eines Snapshots aktiviert waren. Bei der Ausführung einer Snapshottransaktion wird ein Snapshot aller zu diesem Zeitpunkt aktiven Transaktionen erstellt. Für Nichtsnapshottransaktionen 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.

Berechtigungen

Erfordert die VIEW SERVER 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:

  • Bei XSN-57 handelt es sich um einen UPDATE-Vorgang unter der serialisierbaren Isolation.

  • XSN-58 entspricht XSN-57.

  • Bei XSN-59 handelt es sich um einen SELECT-Vorgang unter der Snapshotisolation.

  • 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 Snapshottransaktion 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 Snapshottransaktion ist, weist first_snapshot_sequence_num den Wert NULL auf.