sys.dm_tran_current_transaction

返回一行,该行显示当前会话中的事务状态信息。

语法

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 权限。

示例

下面的示例使用具有四个并发事务的测试方案,每一个事务都由事务序列号 (XSN) 标识,并在 ALLOW_SNAPSHOT_ISOLATION 和 READ_COMMITTED_SNAPSHOT 选项设置为 ON 的数据库中运行。下列事务正在运行:

  • XSN-57 是序列化隔离下的更新操作。

  • 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-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。