sys.dm_tran_transactions_スナップショット (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

各スナップショット トランザクションの開始時にアクティブなトランザクションのsequence_numberの仮想テーブルを返します。 このビューで返される情報を基に、次のことを確認できます。

  • 現在アクティブなスナップショット トランザクションの数を検索します。

  • 特定のスナップショット トランザクションで無視されるデータ変更。 スナップショット トランザクションの開始時にアクティブなトランザクションの場合、そのトランザクションがコミットされた後でも、そのトランザクションによるすべてのデータ変更は、スナップショット トランザクションによって無視されます。

たとえば、sys.dm_tran_transactions_スナップショットからの次の出力を考えてみます

transaction_sequence_num snapshot_id snapshot_sequence_num  
------------------------ ----------- ---------------------  
59                       0           57  
59                       0           58  
60                       0           57  
60                       0           58  
60                       0           59  
60                       3           57  
60                       3           58  
60                       3           59  
60                       3           60  

transaction_sequence_num 列は、現在のスナップショット トランザクションのトランザクション シーケンス番号 (XSN) です。 出力には、次の 2 つが表示されます6059 snapshot_sequence_num 列は、各スナップショット トランザクションの開始時にアクティブ状態にあったトランザクションのトランザクション シーケンス番号です。

出力は、XSN-57 と XSN-58 の 2 つのアクティブなトランザクションが実行されている間に、スナップショット トランザクション XSN-59 が開始されることを示しています。 XSN-57 または XSN-58 がデータ変更を行った場合、XSN-59 は変更を無視し、行のバージョン管理を使用してデータベースのトランザクション整合性ビューをメインします。

スナップショット トランザクション XSN-60 は、XSN-57 および XSN-58 および XSN 59 によって行われたデータ変更も無視します。

返されるテーブル

列名 データ型 説明
transaction_sequence_num bigint スナップショット トランザクションのトランザクション シーケンス番号 (XSN)。
スナップショット_id int 行のバージョン管理を使用して読み取りコミットで開始された各 Transact-SQL ステートメントのスナップショット ID。 この値は、行のバージョン管理を使用して読み取りコミット済みで実行される各クエリをサポートするデータベースのトランザクション整合性ビューを生成するために使用されます。
スナップショット_sequence_num bigint スナップショット トランザクションが開始したときに有効となっていたトランザクション シーケンス番号。

アクセス許可

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 アクセス許可が必要です。

解説

スナップショット トランザクションが開始されると、データベース エンジンは、その時点でアクティブなすべてのトランザクションを記録します。 sys.dm_tran_transactions_スナップショットは、現在アクティブなすべてのスナップショット トランザクションに関するこの情報を報告します。

各トランザクションは、トランザクションの開始時に割り当てられるトランザクション シーケンス番号によって識別されます。 トランザクションは、BEGIN TRANSACTION または BEGIN WORK ステートメントが実行されたときに開始されますが、 ただし、データベース エンジンは、BEGIN TRANSACTION または BEGIN WORK ステートメントの後にデータにアクセスする最初の Transact-SQL ステートメントを実行してトランザクション シーケンス番号を割り当てます。 トランザクション シーケンス番号は 1 ずつ増加します。

参照

動的管理ビューと動的管理関数 (Transact-SQL)
トランザクション関連の動的管理ビューおよび関数 (Transact-SQL)