Udostępnij za pośrednictwem


sys.dm_tran_version_store (Transact-SQL)

Returns a virtual table that displays all version records in the version store.sys.dm_tran_version_store is inefficient to run because it queries the entire version store, and the version store can be very large.

Każdy rekord wersji są przechowywane jako dane binarne wraz z pewnych informacji śledzenia lub stan.Podobne do rekordów w tabelach bazy danych, rekordy magazynu wersja są przechowywane w stron bajt 8192.Jeśli rekord przekracza 8192 bajty, rekord zostanie podzielona na dwa różne rekordy.

Ponieważ wersji rekordu jest przechowywany jako plik binarny, 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 one znajdować się w magazynie wersja.

sys.dm_tran_version_store

Zwracana tabela

Nazwa kolumna

Typ danych

Description

transaction_sequence_num

bigint

Numer transakcji, która generuje wersja rekordu w sekwencji.

version_sequence_num

bigint

Numer wersja rekordów sekwencji.Wartość ta jest unikatowa w obrębie transakcji Generowanie wersja.

database_id

int

Identyfikator wersji rekordów bazy danych.

rowset_id

bigint

Identyfikator rekordu zestawu zestaw wierszy.

Stan

tinyint

Wskazuje, czy wersji rekord 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ść w pierwszej części wersji rekordu w bajtach.

record_image_first_part

varbinary(8000)

Binarny pierwszą część wersja rekordu.

record_length_second_part_in_bytes

smallint

Długość drugiej części wersja rekordu w bajtach.

record_image_second_part

varbinary(8000)

Binarny druga część rekordu wersja.

Uprawnienia

Wymaga uprawnienia VIEW SERVER STATE na serwerze.

Aby wyświetlić record_image_first_part and record_image_second_part kolumn, wymaga uprawnienia CONTROL SERVER.W przeciwnym wypadku te kolumny zwróci wartość NULL.

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.

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;

Here is the result set.

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 57 XSN została utworzona trzy wersje wierszy z jednej tabela i 58 XSN zostało utworzone z jednej wersja wiersza z innej tabela.