sys.dm_tran_active_transactions (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本) 是Azure SQL Database 是Azure SQL 受控執行個體 是Azure Synapse Analytics 是平行處理資料倉儲

傳回有關 SQL Server 執行個體之交易的資訊。

注意

若要從或呼叫這個 Azure Synapse Analytics Analytics Platform System (PDW) ,請使用 sys.dm_pdw_nodes_tran_active_transactions 名稱。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

資料行名稱 資料類型 描述
transaction_id bigint 執行個體層級 (而非資料庫層級) 的交易識別碼。 它只有在一個執行個體的所有資料庫才是唯一的,在所有的伺服器執行個體則不是。
NAME nvarchar(32) 交易名稱。 如果交易被標示出來,而且標示的名稱取代了交易名稱,這個值便會被覆寫。
transaction_begin_time datetime 交易啟動的時間。
transaction_type int 交易的類型。

1 = 讀取/寫入交易

2 = 唯讀交易

3 = 系統交易

4 = 分散式交易
transaction_uow uniqueidentifier 分散式交易的交易工作單位 (UOW) 識別碼。 MS DTC 是以 UOW 識別碼來使用分散式交易。
transaction_state int 0 = 交易尚未完全初始化。

1 = 交易已經初始化,但尚未啟動。

2 = 交易在作用中。

3 = 交易已經結束。 它只用於唯讀交易。

4 = 認可處理序已經在分散式交易上起始。 它只用於分散式交易。 分散式交易仍在作用中,但無法再做進一步的處理。

5 = 交易是在已準備的狀態,正在等候解析。

6 = 已認可交易。

7 = 正在回復交易。

8 = 已回復交易。
transaction_status int 僅供參考之用。 不支援。 我們無法保證未來的相容性。
transaction_status2 int 僅供參考之用。 不支援。 我們無法保證未來的相容性。
dtc_state int 適用 于: Azure SQL Database 透過 目前版本) (初始版本。

1 = ACTIVE

2 = PREPARED

3 = COMMITTED

4 = ABORTED

5 = RECOVERED
dtc_status int 僅供參考之用。 不支援。 我們無法保證未來的相容性。
dtc_isolation_level int 僅供參考之用。 不支援。 我們無法保證未來的相容性。
filestream_transaction_id varbinary(128) 適用 于: Azure SQL Database 透過 目前版本) (初始版本。

僅供參考之用。 不支援。 我們無法保證未來的相容性。
pdw_node_id int 適用 于: Azure Synapse Analytics 、 Analytics Platform System (PDW)

此散發所在之節點的識別碼。

權限

在 SQL Server 和 SQL 受控執行個體上,需要 VIEW SERVER STATE 許可權。

在 SQL Database BasicS0S1 服務目標,以及針對 彈性 集區中的資料庫,需要 伺服器管理員帳戶、 Azure Active Directory 系統管理員帳戶或 ##MS_ServerStateReader## 伺服器角色的成員資格。 在所有其他 SQL Database 服務目標上, VIEW DATABASE STATE 資料庫的許可權或伺服器角色的成員資格 ##MS_ServerStateReader## 都是必要的。

範例

A. 使用 sys.dm_tran_active_transactions 與其他 Dmv 來尋找使用中交易的相關資訊

下列範例會顯示系統上的任何使用中交易,並提供有關交易、使用者會話、所提交應用程式的詳細資訊,以及啟動它的查詢和其他許多專案。

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;

另請參閱

sys.dm_tran_session_transactions (SQL transact-sql)
sys.dm_tran_database_transactions (SQL transact-sql)
動態管理檢視與函數 (Transact-SQL)
交易相關的動態管理檢視和函數 (Transact-SQL)