sys.dm_tran_active_transactions (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Returns information about transactions for the instance of SQL Server.

Note

To call this from Azure Synapse Analytics or Analytics Platform System (PDW), use the name sys.dm_pdw_nodes_tran_active_transactions. This syntax is not supported by serverless SQL pool in Azure Synapse Analytics.

Column Name Data Type Description
transaction_id bigint ID of the transaction at the instance level, not the database level. It is only unique across all databases within an instance but not unique across all server instances.
name nvarchar(32) Transaction name. This is overwritten if the transaction is marked and the marked name replaces the transaction name.
transaction_begin_time datetime Time that the transaction started.
transaction_type int Type of transaction.

1 = Read/write transaction

2 = Read-only transaction

3 = System transaction

4 = Distributed transaction
transaction_uow uniqueidentifier Transaction unit of work (UOW) identifier for distributed transactions. MS DTC uses the UOW identifier to work with the distributed transaction.
transaction_state int 0 = The transaction has not been completely initialized yet.

1 = The transaction has been initialized but has not started.

2 = The transaction is active.

3 = The transaction has ended. This is used for read-only transactions.

4 = The commit process has been initiated on the distributed transaction. This is for distributed transactions only. The distributed transaction is still active but further processing cannot take place.

5 = The transaction is in a prepared state and waiting resolution.

6 = The transaction has been committed.

7 = The transaction is being rolled back.

8 = The transaction has been rolled back.
transaction_status int Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
transaction_status2 int Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
dtc_state int Applies to: Azure SQL Database (Initial release through current release).

1 = ACTIVE

2 = PREPARED

3 = COMMITTED

4 = ABORTED

5 = RECOVERED
dtc_status int Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
dtc_isolation_level int Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
filestream_transaction_id varbinary(128) Applies to: Azure SQL Database (Initial release through current release).

Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
pdw_node_id int Applies to: Azure Synapse Analytics, Analytics Platform System (PDW)

The identifier for the node that this distribution is on.

Permissions

On SQL Server and SQL Managed Instance, requires VIEW SERVER STATE permission.

On SQL Database Basic, S0, and S1 service objectives, and for databases in elastic pools, the server admin account, the Microsoft Entra admin account, or membership in the ##MS_ServerStateReader## server role is required. On all other SQL Database service objectives, either the VIEW DATABASE STATE permission on the database, or membership in the ##MS_ServerStateReader## server role is required.

Permissions for SQL Server 2022 and later

Requires VIEW SERVER PERFORMANCE STATE permission on the server.

Examples

A. Using sys.dm_tran_active_transactions with other DMVs to find information about active transactions

The following example shows any active transactions on the system and provides detailed information about the transaction, the user session, the application that submitted, and the query that started it and many others.

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;

See also

sys.dm_tran_session_transactions (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
Dynamic Management Views and Functions (Transact-SQL)
Transaction Related Dynamic Management Views and Functions (Transact-SQL)