Sdílet prostřednictvím


sys.dm_tran_active_transactions (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Dynamický sys.dm_tran_active_transactions pohled správy vrací informace o transakcích dané instance.

Název sloupce Datový typ Description
transaction_id bigint ID transakce je na úrovni instance, ne databáze. Je jedinečný pouze ve všech databázích v jedné instanci, ale není jedinečný napříč všemi serverovými instancemi.
name nvarchar(32) Název transakce. Toto se přepsá, pokud je transakce označena a označené jméno nahradí název transakce.
transaction_begin_time datetime Čas, kdy transakce začala.
transaction_type int Typ transace.

1 = Transakce čtení/zápisu

2 = Transakce pouze pro čtení

3 = Systémová transakce

4 = Distribuovaná transakce
transaction_uow uniqueidentifier Identifikátor transakční jednotky práce (UOW) pro distribuované transakce. Microsoft koordinátor distribuovaných transakcí (MS DTC) používá identifikátor UOW k práci s distribuovanou transakcí.
transaction_state int 0 = Transakce ještě nebyla zcela inicializována.

1 = Transakce byla inicializována, ale není zahájena.

2 = Transakce je aktivní.

3 = Transakce skončila. Používá se pro transakce pouze pro čtení.

4 = Proces commit byl zahájen na distribuované transakci. Pouze pro distribuované transakce. Distribuovaná transakce je stále aktivní, ale další zpracování nelze proběhnout.

5 = Transakce je v připraveném stavu a čeká na vyřešení.

6 = Transakce byla dokončena.

7 = Transakce se ruší.

8 = Transakce byla zrušena.
transaction_status int Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
transaction_status2 int Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
dtc_state int Platí pro: Azure SQL Database.

1 = AKTIVNÍ

2 = PŘIPRAVENO

3 = ZAVÁZÁN

4 = PŘERUŠENO

5 = ZÍSKANO
dtc_status int Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
dtc_isolation_level int Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
filestream_transaction_id varbinary(128) Platí pro: Azure SQL Database.

Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
pdw_node_id int platí pro: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifikátor uzlu, na který je tato distribuce zapnutá.

Povolení

Na SQL Serveru a službě SQL Managed Instance vyžaduje VIEW SERVER STATE oprávnění.

V Microsoft Fabric je pro dotazování sys.dm_tran_active_transactionsvyžadováno členství v rolipřispěvatele nebo v privilegované roli.

U cílů služby SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru.

Poznámky

Pro označení tohoto dynamického pohledu správy z Azure Synapse Analytics nebo Analytics Platform System (PDW) použijte název sys.dm_pdw_nodes_tran_active_transactions Tato syntaxe není podporována serverless SQL poolem v Azure Synapse Analytics.

Examples

A. Použijte sys.dm_tran_active_transactions s jinými DMV, abyste získali informace o aktivních transakcích

Následující příklad ukazuje jakékoli aktivní transakce v systému. Dotaz poskytuje podrobné informace o transakci, uživatelské relaci, aplikaci, která ji odeslala, dotazu, který ji spustil, a mnoha dalších.

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;