Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Geeft een virtuele tabel terug die alle versierecords in de versieopslag toont. sys.dm_tran_version_store is inefficiënt uit te voeren omdat het de hele versieopslag zoekt, en de versieopslag kan erg groot zijn.
Elke versiegefilterde record wordt opgeslagen als binaire gegevens, samen met wat tracking- of statusinformatie. Net als records in databasetabellen worden versieopslagrecords opgeslagen op pagina's van 8192 bytes. Als een record meer dan 8192 bytes is, wordt het record verdeeld over twee verschillende records.
Omdat het versiegekleurde record als binair wordt opgeslagen, zijn er geen problemen met verschillende collaties uit verschillende databases. Gebruik sys.dm_tran_version_store om de vorige versies van de rijen in binaire representatie te vinden zoals ze bestaan in de versiewinkel.
Syntaxis
sys.dm_tran_version_store
Tabel geretourneerd
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| transaction_sequence_num | bigint | Volgnummer van de transactie die de recordversie genereert. |
| version_sequence_num | bigint | Versierecord-sequentienummer. Deze waarde is uniek binnen de versiegenererende transactie. |
| database_id | int | Database-ID van het versiegekleurde record. In Azure SQL Database zijn de waarden uniek binnen één database of een elastische pool, maar niet binnen een logische server. |
| rowset_id | bigint | Rijset-ID van het record. |
| status | tinyint | Geeft aan of een versiegeschilderd record is verdeeld over twee records. Als de waarde 0 is, wordt het record op één pagina opgeslagen. Als de waarde 1 is, wordt het record opgesplitst in twee records die op twee verschillende pagina's worden opgeslagen. |
| min_length_in_bytes | smallint | Minimale lengte van het record in bytes. |
| record_length_first_part_in_bytes | smallint | Lengte van het eerste deel van het versiegenoteerde record in bytes. |
| record_image_first_part | varbinair (8000) | Binaire afbeelding van het eerste deel van het versierecord. |
| record_length_second_part_in_bytes | smallint | Lengte van het tweede deel van de versie registreert in bytes. |
| record_image_second_part | varbinair (8000) | Binaire afbeelding van het tweede deel van het versierecord. |
Permissions
Voor SQL Server en SQL Managed Instance is een machtiging vereist VIEW SERVER STATE .
Voor servicedoelstellingen van SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverrol vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.
Machtigingen voor SQL Server 2022 en hoger
Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.
Voorbeelden
Het volgende voorbeeld gebruikt een testscenario waarin vier gelijktijdige transacties, elk geïdentificeerd door een transactiesequentienummer (XSN), draaien in een database met de ALLOW_SNAPSHOT_ISOLATION en READ_COMMITTED_SNAPSHOT opties op ON. De volgende transacties draaien:
XSN-57 is een update-operatie onder serialiseerbare isolatie.
XSN-58 is hetzelfde als XSN-57.
XSN-59 is een select-operatie onder snapshot-isolatie.
XSN-60 is hetzelfde als XSN-59.
De volgende query wordt uitgevoerd.
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;
Hier is het resultatenoverzicht.
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
De output toont aan dat XSN-57 drie rijversies heeft gemaakt van één tabel en XSN-58 één rijversie van een andere tabel.
Zie ook
Dynamische beheerweergaven en -functies (Transact-SQL)
Transactiegerelateerde dynamische beheerweergaven en -functies (Transact-SQL)