sys.dm_tran_active_transactions (Transact-SQL)

適用対象:Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Azure SQL SQL Server (サポートされているすべてのバージョン)

SQL Serverのインスタンスのトランザクションに関する情報を返します。

注意

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

列名 データ型 説明
transaction_id bigint データベース レベルではなくインスタンス レベルのトランザクションの ID。 これはインスタンス内のすべてのデータベースでのみ一意ですが、すべてのサーバー インスタンスにおいては一意ではありません。
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 Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。

SQL Database BasicS0、および S1 のサービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、Azure Active Directory 管理者アカウント、または ##MS_ServerStateReader##サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

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;

参照

sys.dm_tran_session_transactions (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
動的管理ビューと動的関数 (Transact-SQL)
トランザクション関連の動的管理ビューおよび関数 (Transact-SQL)