Skip to content

Latest commit

 

History

History
82 lines (69 loc) · 6.64 KB

sys-dm-tran-active-transactions-transact-sql.md

File metadata and controls

82 lines (69 loc) · 6.64 KB
title description author ms.author ms.date ms.service ms.subservice ms.topic f1_keywords helpviewer_keywords dev_langs monikerRange
sys.dm_tran_active_transactions (Transact-SQL)
sys.dm_tran_active_transactions (Transact-SQL)
rwestMSFT
randolphwest
02/27/2023
sql
system-objects
reference
sys.dm_tran_active_transactions
sys.dm_tran_active_transactions_TSQL
dm_tran_active_transactions_TSQL
dm_tran_active_transactions
sys.dm_tran_active_transactions dynamic management view
TSQL
>=aps-pdw-2016||=azuresqldb-current||=azure-sqldw-latest||>=sql-server-2016||>=sql-server-linux-2017||=azuresqldb-mi-current

sys.dm_tran_active_transactions (Transact-SQL)

[!INCLUDE sql-asdb-asdbmi-asa-pdw]

Returns information about transactions for the instance of [!INCLUDEssNoVersion].

Note

To call this from [!INCLUDEssazuresynapse-md] or [!INCLUDEssPDW], use the name sys.dm_pdw_nodes_tran_active_transactions. [!INCLUDEsynapse-analytics-od-unsupported-syntax]

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 [!INCLUDEssInternalOnly]
transaction_status2 int [!INCLUDEssInternalOnly]
dtc_state int Applies to: [!INCLUDE ssazure-sqldb] (Initial release through current release).

1 = ACTIVE

2 = PREPARED

3 = COMMITTED

4 = ABORTED

5 = RECOVERED
dtc_status int [!INCLUDEssInternalOnly]
dtc_isolation_level int [!INCLUDEssInternalOnly]
filestream_transaction_id varbinary(128) Applies to: [!INCLUDE ssazure-sqldb] (Initial release through current release).

[!INCLUDEssInternalOnly]
pdw_node_id int Applies to: [!INCLUDEssazuresynapse-md], [!INCLUDEssPDW]

The identifier for the node that this distribution is on.

Permissions

On [!INCLUDEssNoVersion_md] 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)