sys.dm_tran_active_transactions (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

Note

これを 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 Basic、S0、S1 サービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、またはサーバー ロール##MS_ServerStateReader##メンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

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

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

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 (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
動的管理ビューと動的管理関数 (Transact-SQL)
トランザクション関連の動的管理ビューおよび関数 (Transact-SQL)