sys.dm_tran_current_snapshot
返回一个虚拟表,该表显示当前快照事务启动时所有处于活动状态的事务。如果当前事务不是快照事务,则该函数不返回行。sys.dm_tran_current_snapshot 类似于 sys.dm_tran_transactions_snapshot,但 sys.dm_tran_current_snapshot 只返回当前快照事务的活动事务。
语法
sys.dm_tran_current_snapshot
返回的表
列名 |
数据类型 |
说明 |
---|---|---|
transaction_sequence_num |
bigint |
活动事务的事务序列号。 |
权限
需要对服务器具有 VIEW SERVER STATE 权限。
示例
下面的示例使用具有四个并发事务的测试方案,每一个事务都由事务序列号 (XSN) 标识,并在 ALLOW_SNAPSHOT_ISOLATION 和 READ_COMMITTED_SNAPSHOT 选项设置为 ON 的数据库中运行。下列事务正在运行:
XSN-57 是序列化隔离下的更新操作。
XSN-58 与 XSN-57 相同。
XSN-59 是快照隔离下的选择操作。
XSN-60 与 XSN-59 相同。
下面的查询在 XSN-59 的作用域中执行。
SELECT
transaction_sequence_num
FROM sys.dm_tran_current_snapshot;
下面是结果集:
transaction_sequence_num
------------------------
57
58
结果显示 XSN-57 和 XSN-58 在快照事务 XSN-59 启动时已处于活动状态。即使 XSN-57 和 XSN-58 提交或回滚之后,相同的结果也将一直持续到快照事务完成。
在 XSN-60 的作用域中执行相同的查询。
下面是结果集:
transaction_sequence_num
------------------------
57
58
59
XSN-60 的输出不仅包括为 XSN-59 显示的相同事务,而且还包括在 XSN-60 启动时处于活动状态的 XSN-59。