sys.dm_tran_transactions_snapshot
返回每个快照事务启动时活动的事务 sequence_number 的虚拟表。此视图返回的信息有助于您:
确定当前的活动快照事务数。
确定特定快照事务忽略的数据修改。对于在快照事务启动时活动的事务,快照事务将忽略由其进行的所有数据修改,即使在事务提交后也是如此。
例如,请考虑 sys.dm_tran_transactions_snapshot 的下列输出:
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) 号。该输出显示两个序列号:59 和 60。snapshot_sequence_num 列标识在每个快照事务启动时处于活动状态的事务的事务序列号。
该输出显示,在两个活动事务 XSN-57 和 XSN-58 运行时,快照事务 XSN-59 启动。如果 XSN-57 或 XSN-58 进行了数据修改,XSN-59 将忽略这些修改,并使用行版本控制来维护数据库的事务一致视图。
快照事务 XSN-60 将忽略由 XSN-57 和 XSN-58 以及 XSN 59 进行的数据修改。
语法
dm_tran_transactions_snapshot
返回的表
列名 |
数据类型 |
说明 |
---|---|---|
transaction_sequence_num |
bigint |
快照事务的事务序列号 (XSN)。 |
snapshot_id |
int |
在使用行版本控制已提交读的情况下启动的每个 Transact-SQL 语句的快照 ID。该值用于为数据库生成事务一致视图,该数据库支持在使用行版本控制已提交读的情况下运行的每个查询。 |
snapshot_sequence_num |
bigint |
启动快照事务时处于活动状态的事务的事务序列号。 |
权限
需要对服务器具有 VIEW SERVER STATE 权限。
注释
当快照事务启动时,数据库引擎会记录此时处于活动状态的所有事务。sys.dm_tran_transactions_snapshot 将为当前的所有活动快照事务报告此信息。
每个事务都由事务开始时分配的事务序列号标识。在执行 BEGIN TRANSACTION 或 BEGIN WORK 语句时事务启动。但是,数据库引擎通过执行 BEGIN TRANSACTION 或 BEGIN WORK 语句后第一个访问数据的 Transact-SQL 语句来分配事务序列号。事务序列号以一为增量递增。