適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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_transactionsにContributorワークスペースの役割またはより特権の高い役割のメンバーシップが必要です。
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 アクセス許可が必要です。
注釈
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;