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
Azure Synapse Analytics
Analytics Platform Systeem (PDW)
SQL-database in Microsoft Fabric
In een SQL Server-instantie levert deze dynamische beheerweergave een virtuele tabel voor alle actieve transacties die rijversies genereren of mogelijk toegang krijgen. Transacties zijn inbegrepen voor een of meer van de volgende voorwaarden:
Wanneer een of beide ALLOW_SNAPSHOT_ISOLATION en READ_COMMITTED_SNAPSHOT databaseopties op AAN staan:
Er is één rij voor elke transactie die draait onder snapshot isolatieniveau, of read-committed isolatieniveau dat gebruikmaakt van rijversiebeheersing.
Er is één rij per transactie die ervoor zorgt dat er een rijversie wordt aangemaakt in de huidige database. De transactie genereert bijvoorbeeld een rijversie door een rij in de huidige database bij te werken of te verwijderen.
Wanneer een trigger wordt geactiveerd, is er één rij voor de transactie waaronder de trigger wordt uitgevoerd.
Wanneer een online indexeringsprocedure draait, is er één rij voor de transactie die de index aanmaakt.
Wanneer de sessie Multiple Active Results Sets (MARS) is ingeschakeld, is er voor elke transactie één rij die rijversies benadert.
Deze dynamische beheerweergave omvat geen systeemtransacties.
Opmerking
Om dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW), gebruik de naam sys.dm_pdw_nodes_tran_active_snapshot_database_transactions. Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.
Syntaxis
sys.dm_tran_active_snapshot_database_transactions
Tabel geretourneerd
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| transaction_id | bigint | Uniek identificatienummer toegewezen aan de transactie. De transactie-ID wordt voornamelijk gebruikt om de transactie te identificeren bij vergrendelingsoperaties. |
| transaction_sequence_num | bigint | Transactiesequentienummer. Dit is een uniek volgnummer dat aan een transactie wordt toegekend wanneer deze begint. Transacties die geen versierecords genereren en geen snapshotscans gebruiken, ontvangen geen transactiesequentienummer. |
| commit_sequence_num | bigint | Volgnummer dat aangeeft wanneer de transactie is afgerond (commit of stopt). Voor actieve transacties is de waarde NULL. |
| is_snapshot | int | 0 = Is geen snapshot-isolatietransactie. 1 = Is een snapshot-isolatietransactie. |
| session_id | int | ID van de sessie die de transactie startte. |
| first_snapshot_sequence_num | bigint | Laagste transactiesequentienummer van de transacties die actief waren toen een snapshot werd genomen. Bij uitvoering maakt een snapshottransactie een snapshot van alle actieve transacties op dat moment. Voor niet-snapshottransacties toont deze kolom 0. |
| max_version_chain_traversed | int | Maximale lengte van de versieketen die wordt doorlopen om de transactioneel consistente versie te vinden. |
| average_version_chain_traversed | echte | Gemiddeld aantal rijversies in de versie-ketens die worden doorlopen. |
| elapsed_time_seconds | bigint | Verstreken tijd sinds de transactie zijn transactiesequentienummer heeft gekregen. |
| pdw_node_id | int |
van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW) De id voor het knooppunt waarop deze distributie zich bevindt. |
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.
Opmerkingen
sys.dm_tran_active_snapshot_database_transactions rapporteert transacties die een transactievolgnummer (XSN) hebben toegewezen. De XSN wordt toegewezen wanneer de transactie voor het eerst toegang krijgt tot de versiewinkel. In een database die is ingeschakeld voor snapshot-isolatie of read committed isolatie met behulp van rijversiebeheer, tonen de voorbeelden wanneer een XSN aan een transactie wordt toegewezen:
Als een transactie draait op serialiseerbaar isolatieniveau, wordt een XSN toegewezen wanneer de transactie voor het eerst een instructie uitvoert, zoals een UPDATE-operatie, die een rijversie veroorzaakt.
Als een transactie onder snapshot-isolatie draait, wordt een XSN toegewezen wanneer een data manipulation language (DML)-instructie, inclusief een SELECT-operatie, wordt uitgevoerd.
Transactiesequentienummers worden seriëel verhoogd voor elke transactie die wordt gestart in een instantie van de Database Engine.
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_id,
transaction_sequence_num,
commit_sequence_num,
is_snapshot session_id,
first_snapshot_sequence_num,
max_version_chain_traversed,
average_version_chain_traversed,
elapsed_time_seconds
FROM sys.dm_tran_active_snapshot_database_transactions;
Hier is het resultatenoverzicht.
transaction_id transaction_sequence_num commit_sequence_num
-------------- ------------------------ -------------------
9295 57 NULL
9324 58 NULL
9387 59 NULL
9400 60 NULL
is_snapshot session_id first_snapshot_sequence_num
----------- ----------- ---------------------------
0 54 0
0 53 0
1 52 57
1 51 57
max_version_chain_traversed average_version_chain_traversed
--------------------------- -------------------------------
0 0
0 0
1 1
1 1
elapsed_time_seconds
--------------------
419
397
359
333
De volgende informatie beoordeelt de resultaten van sys.dm_tran_active_snapshot_database_transactions:
XSN-57: Omdat deze transactie niet onder snapshot-isolatie draait, zijn de
is_snapshotwaarde enfirst_snapshot_sequence_num.0transaction_sequence_numtoont aan dat een transactiesequentienummer aan deze transactie is toegewezen, omdat één of beide databaseopties ALLOW_SNAPSHOT_ISOLATION of READ_COMMITTED_SNAPSHOT AAN zijn.XSN-58: Deze transactie draait niet onder snapshot-isolatie en dezelfde informatie geldt voor XSN-57.
XSN-59: Dit is de eerste actieve transactie die onder snapshot-isolatie draait. Deze transactie leest gegevens die vóór XSN-57 zijn gecommit, zoals aangegeven door
first_snapshot_sequence_num. De output voor deze transactie toont ook de maximale versieketen die voor een rij wordt doorlopen en1heeft een gemiddelde versie1doorlopen voor elke rij die wordt benaderd. Dit betekent dat transacties XSN-57, XSN-58 en XSN-60 geen rijen hebben aangepast en gecommit.XSN-60: Dit is de tweede transactie die onder snapshot-isolatie draait. De output toont dezelfde informatie als die van XSN-59.
Zie ook
TRANSACTIEISOLATIENIVEAU (Transact-SQL) instellen
Dynamische beheerweergaven en -functies (Transact-SQL)
dynamische beheerweergaven en -functies met betrekking tot transacties (Transact-SQL)