sys.dm_tran_version_store (języka Transact-SQL)
Zwraca wirtualnej tabela , który wyświetla wszystkie rekordy wersja magazynu wersja .sys.dm_tran_version_store jest nieefektywne działać, ponieważ kwerendy magazynu całej wersja i magazynu wersja mogą być bardzo duże.
Każdy rekord numerów wersji jest przechowywana jako dane binarne wraz z niektórych informacji śledzenia lub stan.Podobne do rekordów w tabelach bazy danych, wersja-magazynu rekordy są przechowywane w stronach 8192 bajtów.Jeśli rekord przekracza 8192 bajty, rekord będzie podzielić na dwa różne rekordy.
Ponieważ rekord numerów wersji jest przechowywany jako plik binarny, oznacza to, że nie ma problemów z różnych ustawień sortowania z różnych baz danych.Użycie sys.dm_tran_version_store Aby znaleźć poprzednie wersje wierszy w reprezentacja binarna, jakie istnieją w magazynie wersja .
Składnia
sys.dm_tran_version_store
Zwracana tabela
Nazwa kolumny |
Typ danych |
Opis |
---|---|---|
transaction_sequence_num |
bigint |
Numer transakcji, która generuje rekord wersjasekwencji. |
version_sequence_num |
bigint |
Wersja numer sekwencji rekordu.Wartość ta jest unikatowa w wersja-generowania transakcji. |
database_id |
int |
Identyfikator wersji rekordu bazy danych. |
rowset_id |
bigint |
Identyfikator rekordu zestawu wierszy. |
Stan |
tinyint |
Wskazuje, czy numerów wersji rekordu został podzielony na dwa rekordy.Jeśli wartość jest równa 0, rekord jest przechowywany w jedną strona.Jeśli wartość wynosi 1, rekord jest podzielony na dwa rekordy, które są przechowywane na dwóch różnych stronach. |
min_length_in_bytes |
smallint |
Minimalna długość rekordu w bajtach. |
record_length_first_part_in_bytes |
smallint |
Długość pierwszej części numerów wersji rekordu w bajtach. |
record_image_first_part |
varbinary(8000) |
Binarny pierwszej części wersja rekordu. |
record_length_second_part_in_bytes |
smallint |
Długość drugiej wersja rekordu w bajtach. |
record_image_second_part |
varbinary(8000) |
Binarny druga część wersja rekordu. |
Uprawnienia
Wymaga uprawnienia Wyświetlanie stanu serwera na serwerze.
Aby wyświetlić record_image_first_part i record_image_second_part kolumny, wymaga uprawnień sterowania serwera.W przeciwnym wypadku te kolumny zostanie zwrócona wartość NULL.
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.
XSN 59 jest operacją select w izolacji migawka .
XSN-60 is the same as XSN-59.
Następująca kwerenda jest wykonywana.
SELECT
transaction_sequence_num,
version_sequence_num,
database_id rowset_id,
status,
min_length_in_bytes,
record_length_first_part_in_bytes,
record_image_first_part,
record_length_second_part_in_bytes,
record_image_second_part
FROM sys.dm_tran_version_store;
Oto zestaw wyników.
transaction_sequence_num version_sequence_num database_id
------------------------ -------------------- -----------
57 1 9
57 2 9
57 3 9
58 1 9
rowset_id status min_length_in_bytes
-------------------- ------ -------------------
72057594038321152 0 12
72057594038321152 0 12
72057594038321152 0 12
72057594038386688 0 16
record_length_first_part_in_bytes
---------------------------------
29
29
29
33
record_image_first_part
--------------------------------------------------------------------
0x50000C0073000000010000000200FCB000000001000000270000000000
0x50000C0073000000020000000200FCB000000001000100270000000000
0x50000C0073000000030000000200FCB000000001000200270000000000
0x500010000100000002000000030000000300F800000000000000002E0000000000
record_length_second_part_in_bytes record_image_second_part
---------------------------------- ------------------------
0 NULL
0 NULL
0 NULL
0 NULL
Dane wyjściowe pokazuje, że XSN 57 została utworzona trzy wersje wierszy z jednej tabela i XSN 58 został utworzony jeden wiersz wersja z innej tabela.