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.
Zobacz także