sys.dm_tran_version_store
Aktualisiert: 05. Dezember 2005
Gibt eine virtuelle Tabelle zurück, in der alle Versionsdatensätze im Versionsspeicher angezeigt werden. Die Ausführung von sys.dm_tran_version_store ist ineffizient, da der gesamte Versionsspeicher abgefragt wird und dieser sehr groß sein kann.
Jeder Versionsdatensatz wird als Binärdaten zusammen mit Protokollierungs- oder Statusinformationen gespeichert. Ähnlich wie Datensätze in Datenbanktabellen werden die Versionsspeicherdatensätze in 8192 Bytes umfassenden Seiten gespeichert. Falls ein Datensatz größer ist als 8192 Bytes, wird er in zwei unterschiedliche Datensätze geteilt.
Da der Versionsdatensatz als Binärdaten gespeichert wird, treten keine Probleme mit unterschiedlichen Sortierungen aus unterschiedlichen Datenbanken auf. Suchen Sie mit sys.dm_tran_version_store die vorherigen Versionen der Zeilen in der binären Darstellung, so, wie sie im Versionsspeicher vorhanden sind.
Syntax
sys.dm_tran_version_store
Zurückgegebene Tabelle
Spaltenname | Datentyp | Beschreibung |
---|---|---|
transaction_sequence_num |
bigint |
Sequenznummer der Transaktion, die die Datensatzversion generiert. |
version_sequence_num |
bigint |
Sequenznummer des Versionsdatensatzes. Dieser Wert ist in der die Version generierenden Transaktion eindeutig. |
database_id |
int |
Datenbank-ID des Versionsdatensatzes. |
rowset_id |
bigint |
Rowset-ID des Datensatzes. |
status |
tinyint |
Gibt an, ob ein Versionsdatensatz auf zwei Datensätze aufgeteilt wurde. Falls der Wert 0 beträgt, wird der Datensatz in einer Seite gespeichert. Falls der Wert 1 beträgt, ist der Datensatz auf zwei Datensätze aufgeteilt, die in zwei unterschiedlichen Seiten gespeichert sind. |
min_length_in_bytes |
smallint |
Maximale Länge des Datensatzes (in Bytes). |
record_length_first_part_in_bytes |
smallint |
Länge des ersten Teiles des Versionsdatensatzes (in Bytes). |
record_image_first_part |
varbinary(8000) |
Binäres Bild des ersten Teiles des Versionsdatensatzes. |
record_length_second_part_in_bytes |
smallint |
Länge des zweiten Teiles des Versionsdatensatzes (in Bytes). |
record_image_second_part |
varbinary(8000) |
Binäres Bild des zweiten Teiles des Versionsdatensatzes. |
Berechtigungen
Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.
Für das Anzeigen der Spalten record_image_first_part und record_image_second_part ist die CONTROL SERVER-Berechtigung erforderlich. Andernfalls geben diese Spalten NULL zurück.
Beispiele
Im folgenden Beispiel wird ein Testszenario verwendet, in dem vier gleichzeitige Transaktionen, die jeweils durch eine Transaktionssequenznummer (XSN) identifiziert werden, in einer Datenbank ausgeführt werden, für die die Optionen ALLOW_SNAPSHOT_ISOLATION und READ_COMMITTED_SNAPSHOT auf ON festgelegt sind. Die folgenden Transaktionen werden ausgeführt:
- Bei XSN-57 handelt es sich um einen UPDATE-Vorgang unter der serialisierbaren Isolation.
- XSN-58 entspricht XSN-57.
- Bei XSN-59 handelt es sich um einen SELECT-Vorgang unter der Snapshotisolation.
- XSN-60 entspricht XSN-59.
Die folgende Abfrage wird ausgeführt.
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;
Dies ist das Resultset.
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
Die Ausgabe zeigt an, dass XSN-57 drei Zeilenversionen aus einer Tabelle und XSN-58 eine Zeilenversion aus einer anderen Tabelle erstellt hat.
Siehe auch
Verweis
Dynamische Verwaltungssichten und -funktionen
Dynamische Verwaltungssichten und Funktionen in Verbindung mit Transaktionen
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version
Verlauf
05. Dezember 2005
Begriff
Definition
**Neuer Inhalt:**Ein Beispiel wurde hinzugefügt.