次の方法で共有


sys.dm_tran_active_transactions(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

sys.dm_tran_active_transactions動的管理ビューは、インスタンスのトランザクションに関する情報を返します。

列名 データ型 説明
transaction_id bigint データベース レベルではなくインスタンス レベルのトランザクションの ID。 インスタンス内のすべてのデータベースでのみ一意ですが、すべてのサーバー インスタンスで一意ではありません。
name nvarchar(32) トランザクション名。 トランザクションがマークされている場合、この名前が上書きされます。マークされた名前がトランザクション名と置き換わります。
transaction_begin_time datetime トランザクションが開始された時刻。
transaction_type int トランザクションの種類。

1 = 読み取り/書き込みトランザクション

2 = 読み取り専用トランザクション

3 = システム トランザクション

4 = 分散トランザクション
transaction_uow uniqueidentifier 分散トランザクションのトランザクション作業単位 (UOW) 識別子。 Microsoft分散トランザクションコーディネーター(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 データベース

1 = アクティブ

2 = 準備済み

3 = コミット

4 = 中止

5 = 回復
dtc_status int 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
dtc_isolation_level int 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
filestream_transaction_id varbinary (128) 適用対象: Azure SQL データベース

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
pdw_node_id int 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

このディストリビューションがオンになっているノードの識別子。

アクセス許可

SQL Server と SQL Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。

Microsoft Fabricでは、クエリsys.dm_tran_active_transactionsContributorワークスペースの役割またはより特権の高い役割のメンバーシップが必要です。

SQL Database の BasicS0S1 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または ##MS_ServerStateReader##サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

SQL Server 2022 以降でのアクセス許可

サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。

注釈

Azure Synapse AnalyticsやAnalytics Platform System(PDW)からこの動的管理ビューを呼び出すには、 sys.dm_pdw_nodes_tran_active_transactions という名前を使用します。この構文はAzure Synapse AnalyticsのサーバーレスSQLプールではサポートされていません。

A. 他のDMVとsys.dm_tran_active_transactionsを使って、アクティブな取引情報を見つけてください

以下の例は、システム上で進行中のトランザクションを示しています。 クエリはトランザクション、ユーザーセッション、提出したアプリケーション、それを始めたクエリなど、多くの詳細情報を提供します。

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;