sys.dm_tran_active_snapshot_database_transactions (języka Transact-SQL)

W SQL Server wystąpienietego dynamiczny widok zarządzania zwraca wirtualnej tabela dla wszystkich aktywnych transakcji, które generują lub potencjalnie uzyskać dostęp do wersji wiersza.Transakcje są uwzględniane dla jednego lub więcej z następujących warunków:

  • Gdy jeden lub oba ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT bazy danych są następujące opcje zestaw na:

    • Istnieje jeden wiersz dla każdej transakcji, która jest uruchomiona w ramach migawka poziom izolacjilub popełnionych odczytu poziom izolacji korzystający z wersji wiersza.

    • Istnieje jeden wiersz dla każdej transakcji, która powoduje, że wiersz wersja utworzone w bieżącej bazie danych.Na przykład transakcja tworzy wiersz wersja aktualizowania lub usuwania wiersza w bieżącej bazie danych.

  • Po uruchomieniu wyzwalacza, istnieje jeden wiersz transakcji, w ramach którego wyzwalacz jest wykonywany.

  • Uruchamiając online procedura indeksowania jest jeden wiersz transakcji, który tworzy indeks.

  • Gdy wiele zestawów wyników Active (MARS) sesja jest włączony, istnieje jeden wiersz dla każdej transakcji, który uzyskuje dostęp do wersji wiersza.

W tym dynamiczny widok zarządzania nie obejmuje systemu transakcji.

Składnia

sys.dm_tran_active_snapshot_database_transactions

Zwracana tabela

Nazwa kolumny

Typ danych

Opis

transaction_id

bigint

Unikatowy numer identyfikacyjny przypisany dla transakcji.Identyfikator transakcji służy głównie do identyfikowania transakcji w operacji blokowania.

transaction_sequence_num

bigint

Numer sekwencji transakcji.Jest liczbą unikatowa sekwencja, która jest przypisana do transakcji przy każdym uruchomieniu.Transakcje, które nie generują wersja rekordów i nie używać migawka skanowanie nie otrzyma numer sekwencji transakcji.Aby uzyskać więcej informacji, zobacz Opis wiersza na podstawie wersji poziomów izolacji.

commit_sequence_num

bigint

Numer sekwencyjny, wskazujący, po zakończeniu transakcji, (zatwierdzenia lub zatrzymuje).Dla aktywnych transakcji wartość jest NULL.

is_snapshot

int

0 = Nie jest transakcją izolacji migawka .

1 = Jest migawka izolacji transakcji.

session_id

int

Identyfikator sesja , rozpoczęcia transakcji.

first_snapshot_sequence_num

bigint

Najniższy numer sekwencji transakcji transakcji, które były aktywne, kiedy migawka zostało zrobione.Na wykonanie transakcji migawka pobiera migawka wszystkich aktywnych transakcji w tym czas.Nonsnapshot transakcji w tej kolumna wyświetlana 0.

max_version_chain_traversed

int

Maksymalna długość łańcucha wersja , który przecina odnaleźć transakcyjnie zgodna wersja.

average_version_chain_traversed

real

Średnia liczba wersji wiersza w łańcuchach wersja , które jest przesunięta.

elapsed_time_seconds

bigint

Upłynięte czas od transakcji uzyskać jego numer sekwencji transakcji.

Uprawnienia

Wymaga uprawnienia Wyświetlanie stanu serwera na serwerze.

Uwagi

sys.dm_tran_active_snapshot_database_transactions raporty transakcji, które przypisano numer sekwencji transakcji (XSN).XSN jest przypisywany podczas transakcji uzyskuje dostęp najpierw do magazynu wersja .W bazie danych jest włączone migawka izolacji lub odczytać popełnione izolacji przy użyciu wersji wierszy w przykładach pokazano, kiedy XSN jest przypisana do transakcji:

  • Jeśli transakcja jest uruchomiona w ramach poziom izolacjimożliwy do serializacji, XSN jest przypisywany podczas transakcji wykonuje najpierw instrukcja, takich jak operacji aktualizacji, powodujący, że wiersz wersja ma zostać utworzony.

  • Jeśli transakcja jest uruchomiony w izolacji migawka , XSN jest przypisywany podczas wykonywania jakiegokolwiek język edycji danych (DML) instrukcja, łącznie z operacji wyboru.

Numer sekwencji transakcji szeregowo są zwiększane dla każdej transakcji, który jest uruchomiony w wystąpienie Aparat baz danych.

Aby uzyskać więcej informacji dotyczących transakcji sekwencji numerów, zobacz Opis wiersza na podstawie wersji poziomów izolacji.

Przykłady

W poniższym przykładzie użyto Scenariusz testów działa cztery jednoczesnych transakcji, każdy identyfikowane przez numer sekwencji transakcji (XSN) w baza danych o ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT opcje zestaw na.Są uruchomione następujące transakcje:

  • XSN 57 jest operacją update w izolacji możliwy do serializacji.

  • XSN 58 jest taka sama jak XSN 57.

  • Wybierz operację w izolacji migawka jest XSN-59

  • XSN 60 jest takie same jak XSN 59.

Następująca kwerenda jest wykonywana.

SELECT 
    transaction_id,
    transaction_sequence_num,
    commit_sequence_num,
    is_snapshot session_id,
    first_snapshot_sequence_num,
    max_version_chain_traversed,
    average_version_chain_traversed,
    elapsed_time_seconds
  FROM sys.dm_tran_active_snapshot_database_transactions;

Oto zestaw wyników.

transaction_id  transaction_sequence_num  commit_sequence_num
--------------  ------------------------  -------------------
9295            57                        NULL
9324            58                        NULL
9387            59                        NULL
9400            60                        NULL

is_snapshot  session_id   first_snapshot_sequence_num
-----------  -----------  ---------------------------
0            54           0
0            53           0
1            52           57
1            51           57

max_version_chain_traversed  average_version_chain_traversed
---------------------------  -------------------------------
0                            0
0                            0
1                            1
1                            1

elapsed_time_seconds
--------------------
419
397
359
333

Następujące informacje ocenia wyniki z sys.dm_tran_active_snapshot_database_transactions:

  • XSN 57: Ponieważ ta transakcja nie jest uruchomiona w izolacji migawka is_snapshot wartość i first_snapshot_sequence_num są 0.transaction_sequence_numpokazuje że numer sekwencji transakcji została przypisana do tej transakcji, ponieważ są w jednej lub obu ALLOW_SNAPSHOT_ISOLATION lub READ_COMMITTED_SNAPSHOT opcje bazy danych.

  • XSN-58: Ta transakcja nie jest uruchomiona w izolacji migawka i stosuje te same informacje XSN 57.

  • XSN-59: Jest to pierwszy active transakcji, która działa w izolacji migawka .Ta transakcja odczytuje dane, które zostały popełnione przed XSN-57, wskazane przez first_snapshot_sequence_num.Dane wyjściowe dla tej transakcji pokazuje również łańcuch maksymalna wersja , która jest przesunięta dla wiersza jest 1 i została przesunięta średnio 1 wersja dla każdego wiersza, który jest dostępny.Oznacza to, że transakcje XSN 57, XSN 58 i XSN 60 mają nie zmodyfikowanych wierszy i zatwierdzone.

  • XSN-60: Jest to druga transakcja w izolacji migawka .Dane wyjściowe zawiera takie same informacje jak XSN 59.