Udostępnij za pośrednictwem


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.