sys.dm_tran_active_transactions (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Den dynamiska sys.dm_tran_active_transactions hanteringsvyn returnerar information om transaktioner för instansen.

Kolumnnamn Datatyp Description
transaction_id bigint ID för transaktionen på instansnivå, inte databasnivå. Den är endast unik över alla databaser inom en instans men inte unik över alla serverinstanser.
name nvarchar(32) Transaktionsnamn. Detta skrivs över om transaktionen är markerad och det markerade namnet ersätter transaktionsnamnet.
transaction_begin_time datetime Tiden då transaktionen startade.
transaction_type int Typ av transaktion.

1 = Läs/skriv-transaktion

2 = Skrivskyddad transaktion

3 = Systemtransaktion

4 = Distribuerad transaktion
transaction_uow uniqueidentifier Transaktionsenhets-/arbetsidentifierare (UOW) för distribuerade transaktioner. Microsofts distribuerade transaktionskoordinator (MS DTC) använder UOW-identifieraren för att arbeta med den distribuerade transaktionen.
transaction_state int 0 = Transaktionen har ännu inte helt initierats.

1 = Transaktionen har initierats men har inte startats.

2 = Transaktionen är aktiv.

3 = Transaktionen har avslutats. Används för skrivskyddade transaktioner.

4 = Commit-processen har initierats på den distribuerade transaktionen. Endast för distribuerade transaktioner. Den distribuerade transaktionen är fortfarande aktiv men vidare bearbetning kan inte genomföras.

5 = Transaktionen är i ett förberedt tillstånd och väntar på lösning.

6 = Transaktionen har genomförts.

7 = Transaktionen rullas tillbaka.

8 = Transaktionen har rullats tillbaka.
transaction_status int Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.
transaction_status2 int Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.
dtc_state int gäller för: Azure SQL Database.

1 = AKTIV

2 = FÖRBEREDD

3 = ENGAGERAD

4 = AVBRUTET

5 = ÅTERHÄMTAD
dtc_status int Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.
dtc_isolation_level int Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.
filestream_transaction_id varbinary(128) gäller för: Azure SQL Database.

Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.
pdw_node_id int gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifieraren för noden som den här fördelningen är på.

Permissions

På SQL Server och SQL Managed Instance kräver VIEW SERVER STATE behörighet.

I Microsoft Fabric krävs medlemskap i Contributor-arbetsytsrollen eller den mer privilegierade rollen för att söka sys.dm_tran_active_transactions.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Anmärkningar

För att anropa denna dynamiska hanteringsvy från Azure Synapse Analytics eller Analytics Platform System (PDW), använd namnet sys.dm_pdw_nodes_tran_active_transactions Denna syntax stöds inte av serverless SQL-pool i Azure Synapse Analytics.

Examples

A. Använd sys.dm_tran_active_transactions med andra DMV:er för att hitta information om aktiva transaktioner

Följande exempel visar alla aktiva transaktioner i systemet. Frågan ger detaljerad information om transaktionen, användarsessionen, applikationen som skickades in, och frågan som startade den samt många andra.

SELECT
  GETDATE() as now,
  DATEDIFF(SECOND, transaction_begin_time, GETDATE()) as tran_elapsed_time_seconds,
  st.session_id,
  txt.text, 
  *
FROM
  sys.dm_tran_active_transactions at
  INNER JOIN sys.dm_tran_session_transactions st ON st.transaction_id = at.transaction_id
  LEFT OUTER JOIN sys.dm_exec_sessions sess ON st.session_id = sess.session_id
  LEFT OUTER JOIN sys.dm_exec_connections conn ON conn.session_id = sess.session_id
    OUTER APPLY sys.dm_exec_sql_text(conn.most_recent_sql_handle)  AS txt
ORDER BY
  tran_elapsed_time_seconds DESC;