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 语句来分配事务序列号。事务序列号以一为增量递增。