sys.dm_tran_current_transaction (Transact-SQL)
現在のセッションにおけるトランザクションの状態情報を表す 1 行を返します。
構文
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 |
グローバル シーケンス番号。この値は、行バージョンをバージョン ストアに保持する必要があるトランザクションの、最も古いトランザクション シーケンス番号を表します。これより前のトランザクションで作成された行バージョンは削除できます。 |
権限
サーバーに対する VIEW SERVER 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-57 を使用することと、XSN-57 が XSN-59 の開始時にアクティブであったことを示しています。つまり、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 になります。