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.