sys.dm_tran_current_transaction (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
現在のセッションのトランザクションの状態情報を表示する 1 つの行を返します。
Note
これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、 sys.dm_pdw_nodes_tran_current_transactionという名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
構文
sys.dm_tran_current_transaction
返されるテーブル
列名 | データ型 | 説明 |
---|---|---|
transaction_id | bigint | 現在のスナップショットのトランザクション ID。 |
transaction_sequence_num | bigint | レコード バージョンを生成するトランザクションのシーケンス番号。 |
transaction_is_snapshot | bit | スナップショット分離の状態。 トランザクションがスナップショット分離に基づいて開始された場合、この値は 1 です。 それ以外の場合、値は 0 です。 |
first_snapshot_sequence_num | bigint | スナップショットの作成時にアクティブだったトランザクションの最小トランザクション シーケンス番号。 実行時に、スナップショット トランザクションは、その時点でアクティブなすべてのトランザクションのスナップショットを取得します。 スナップ以外のトランザクションの場合、この列には 0 が表示されます。 |
last_transaction_sequence_num | bigint | グローバル シーケンス番号。 この値は、システムにより生成された最後のトランザクション シーケンス番号を表します。 |
first_useful_sequence_num | bigint | グローバル シーケンス番号。 この値は、行バージョンをバージョン ストアに保持する必要があるトランザクションの、最も古いトランザクション シーケンス番号を表します。 以前のトランザクションによって作成された行バージョンは削除できます。 |
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 アクセス許可が必要です。
例
次の例では、4 つの同時実行トランザクションが存在するテスト シナリオを使用します。これらのトランザクションはそれぞれトランザクション シーケンス番号 (XSN) で識別され、ALLOW_SNAPSHOT_ISOLATION オプションと READ_COMMITTED_SNAPSHOT オプションが ON に設定されているデータベース内で実行されます。 実行されるトランザクションは次のとおりです。
XSN-57。SERIALIZABLE 分離での更新操作です。
XSN-58 は XSN-57 と同じです。
XSN-59 は、スナップショット分離での選択操作です。
XSN-60 は XSN-59 と同じです。
次のクエリは、各トランザクションのスコープ内で実行されます。
SELECT
transaction_id
,transaction_sequence_num
,transaction_is_snapshot
,first_snapshot_sequence_num
,last_transaction_sequence_num
,first_useful_sequence_num
FROM sys.dm_tran_current_transaction;
XSN-59 の結果を次に示します。
transaction_id transaction_sequence_num transaction_is_snapshot
-------------------- ------------------------ -----------------------
9387 59 1
first_snapshot_sequence_num last_transaction_sequence_num
--------------------------- -----------------------------
57 61
first_useful_sequence_num
-------------------------
57
この出力は、XSN-59 が XSN-59 の開始時にアクティブだった最初のトランザクションとして XSN-57 を使用するスナップショット トランザクションであることを示しています。 つまり、XSN-59 では、トランザクション シーケンス番号が XSN-57 より低いトランザクションによってコミットされたデータが読み取られます。
XSN-57 の結果を次に示します。
transaction_id transaction_sequence_num transaction_is_snapshot
-------------------- ------------------------ -----------------------
9295 57 0
first_snapshot_sequence_num last_transaction_sequence_num
--------------------------- -----------------------------
NULL 61
first_useful_sequence_num
-------------------------
57
XSN-57 はスナップショット トランザクションではないため、 first_snapshot_sequence_num
は NULL
。
参照
動的管理ビューと動的管理関数 (Transact-SQL)
トランザクション関連の動的管理ビューおよび関数 (Transact-SQL)