sys.dm_tran_active_transactions (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、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)