Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Zwraca wirtualną tabelę, która wyświetla wszystkie rekordy wersji w magazynie wersji. sys.dm_tran_version_store jest nieefektywny w uruchomieniu, ponieważ zapytuje cały magazyn wersji, a magazyn wersji może być bardzo duży.
Każdy wersjonowany rekord jest przechowywany jako dane binarne wraz z informacjami o śledzeniu lub statusie. Podobnie jak rekordy w tabelach baz danych, rekordy przechowywania wersji są przechowywane na stronach o rozmiarze 8192 bajtów. Jeśli rekord przekroczy 8192 bajty, zostanie podzielony na dwa różne rekordy.
Ponieważ wersjonowany rekord jest przechowywany jako binarny, nie ma problemów z różnymi sortowaniami z różnych baz danych. Użyj sys.dm_tran_version_store , aby znaleźć poprzednie wersje wierszy w reprezentacji binarnej tak, jak istnieją w magazynie wersji.
Składnia
sys.dm_tran_version_store
Zwracana tabela
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
| transaction_sequence_num | bigint | Numer sekwencyjny transakcji generującej wersję rekordu. |
| version_sequence_num | bigint | Numer sekwencyjny rekordu wersji. Ta wartość jest unikalna w ramach transakcji generującej wersje. |
| database_id | int | Identyfikator bazy danych rekordu wersjonalnego. W usłudze Azure SQL Database wartości są unikatowe w ramach pojedynczej bazy danych lub elastycznej puli, ale nie w obrębie serwera logicznego. |
| rowset_id | bigint | Identyfikator wiersza rekordu. |
| stan | tinyint | Wskazuje, czy wersja rekordu została podzielona na dwa rekordy. Jeśli wartość wynosi 0, rekord jest przechowywany na jednej stronie. Jeśli wartość wynosi 1, rekord dzieli się na dwa zapisy 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 zapisu wersjonowanego w bajtach. |
| record_image_first_part | varbinary(8000) | Obraz binarny pierwszej części rekordu wersji. |
| record_length_second_part_in_bytes | smallint | Długość drugiej części zapisu wersji w bajtach. |
| record_image_second_part | varbinary(8000) | Obraz binarny drugiej części rekordu wersji. |
Permissions
W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.
W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.
Przykłady
Poniższy przykład wykorzystuje scenariusz testowy, w którym cztery równoległe transakcje, każda oznaczona numerem sekwencji transakcji (XSN), są uruchamiane w bazie danych, w której opcje ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT są ustawione na ON. Następujące transakcje są w trakcie:
XSN-57 to operacja aktualizacji w izolacji serializowanej.
XSN-58 jest tym samym co XSN-57.
XSN-59 to operacja selekcyjna w izolacji migawkowej.
XSN-60 jest tym samym co XSN-59.
Wykonywane jest następujące zapytanie.
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
Wynik pokazuje, że XSN-57 stworzył trzy wersje wiersza z jednej tabeli, a XSN-58 stworzył jedną wersję wierszową z innej tabeli.
Zobacz też
Dynamiczne widoki zarządzania i funkcje (Transact-SQL)
Dynamiczne widoki zarządzania i funkcje związane z transakcjami (Transact-SQL)