Share via


sys.dm_tran_current_transaction (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

Geeft een enkele rij terug die de statusinformatie van de transactie in de huidige sessie weergeeft.

Opmerking

Om dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW), gebruik de naam sys.dm_pdw_nodes_tran_current_transaction. Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Syntaxis

  
sys.dm_tran_current_transaction  

Tabel geretourneerd

Kolomnaam Gegevenstype Description
transaction_id bigint Transactie-ID van de huidige snapshot.
transaction_sequence_num bigint Volgnummer van de transactie die de recordversie genereert.
transaction_is_snapshot bit Snapshot isolatiestatus. Deze waarde is 1 als de transactie wordt gestart onder snapshot-isolatie. Anders is de waarde 0.
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.
last_transaction_sequence_num bigint Globaal volgnummer. Deze waarde vertegenwoordigt het laatste transactiesequentienummer dat door het systeem is gegenereerd.
first_useful_sequence_num bigint Globaal volgnummer. Deze waarde vertegenwoordigt het oudste transactiesequentienummer van de transactie die rijversies heeft die in de versieopslag moeten worden bewaard. Rijversies die door eerdere transacties zijn aangemaakt, kunnen worden verwijderd.
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.

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 binnen de scope van elke transactie.

SELECT   
    transaction_id  
   ,transaction_sequence_num  
   ,transaction_is_snapshot  
   ,first_snapshot_sequence_num  
   ,last_transaction_sequence_num  
   ,first_useful_sequence_num  
  FROM sys.dm_tran_current_transaction;  

Hier is het resultaat voor XSN-59.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9387                 59                       1                         
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
57                               61                        
  
first_useful_sequence_num  
-------------------------  
57  

De output toont aan dat XSN-59 een snapshottransactie is waarbij XSN-57 als eerste transactie actief was toen XSN-59 startte. Dit betekent dat XSN-59 gegevens leest die zijn toegezegd door transacties met een transactiesequentienummer lager dan XSN-57.

Hier is het resultaat voor XSN-57.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9295                 57                       0  
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
NULL                        61  
  
first_useful_sequence_num  
-------------------------  
57  

Omdat XSN-57 geen snapshottransactie is, first_snapshot_sequence_num is NULL.

Zie ook

Dynamische beheerweergaven en -functies (Transact-SQL)
dynamische beheerweergaven en -functies met betrekking tot transacties (Transact-SQL)