sys.dm_tran_current_transaction (Transact-SQL)
Zwraca pojedynczy wiersz, który wyświetla informacje o stanie transakcji w bieżącej sesja.
sys.dm_tran_current_transaction
Zwracana tabela
Nazwa kolumna |
Typ danych |
Description |
---|---|---|
transaction_id |
bigint |
Identyfikator transakcji bieżącej migawka. |
transaction_sequence_num |
bigint |
Numer transakcji, która generuje wersja rekordu w sekwencji. |
transaction_is_snapshot |
bit |
Stan izolacji migawka.Ta wartość wynosi 1, jeśli transakcja jest uruchamiana przy izolacji migawka.W przeciwnym razie wartość jest równa 0. |
first_snapshot_sequence_num |
bigint |
Najniższy numer sekwencji transakcji transakcji, które były aktywne podczas uwzględniono migawka.Na wykonanie transakcji migawka tworzy "migawkę" wszystkich aktywnych transakcji w tym czasie.W przypadku nonsnapshot transakcji w tej kolumnie wyświetlana jest 0. |
last_transaction_sequence_num |
bigint |
Numer sekwencyjny globalne.Wartość ta oznacza numer sekwencyjny ostatniej transakcji wygenerowanych przez system. |
first_useful_sequence_num |
bigint |
Numer sekwencyjny globalne.Wartość ta oznacza najstarsze numer sekwencji transakcji transakcji, która ma wersja wiersza, które muszą być przechowywane w magazynie wersja.Można usunąć wersji wiersza, które zostały utworzone przez wcześniejsze transakcje. |
Uprawnienia
Wymaga uprawnienia VIEW SERVER STATE na serwerze.
Przykłady
W poniższym przykładzie użyto Scenariusz testów systemem cztery jednoczesnych transakcji, każdy identyfikowane przez numer sekwencji transakcji (XSN) w bazie danych, które zawiera opcje ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT ustawiona na ON.Uruchomione są następujące operacje:
57 XSN jest operacją aktualizacji w obszarze izolacji możliwy do serializacji.
58 XSN jest taka sama, jak 57 XSN.
XSN-59 jest operacją select w izolacji migawka.
60 XSN jest taka sama, jak XSN-59).
Następująca kwerenda jest wykonywana w ramach każdej transakcji.
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;
W tym polu jest wynikiem do 59 XSN.
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
Dane wyjściowe pokazuje, że 59 XSN jest transakcja migawka, która używa 57 XSN jako pierwszej transakcji, który był aktywny podczas uruchamiania XSN-59.Oznacza to, że 59 XSN odczytuje dane przez transakcje, które mają niższe niż 57 XSN numer sekwencyjny transakcji.
Here is the result for XSN-57.
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
Ponieważ XSN 57 nie jest transakcją migawka first_snapshot_sequence_num jest NULL.