sys.dm_tran_version_store
更新日期: 2005 年 12 月 5 日
返回一个可显示版本存储区中所有版本记录的虚拟表。由于 sys.dm_tran_version_store 查询整个版本存储区(可能非常大),因此它的运行效率比较低。
每个有版本控制的记录均以二进制数据的形式与某些跟踪或状态信息存储在一起。与数据库表中的记录相似,版本存储区记录存储在 8192 字节的页中。如果记录超过 8192 字节,则该记录将拆分为两个不同的记录。
由于有版本控制的记录以二进制数据的形式存储,因此不同的数据库可以采用不同的排序规则。使用 sys.dm_tran_version_store 可以查找以二进制表示形式表示的行的早期版本(因为它们存在于版本存储区中)。
语法
sys.dm_tran_version_store
返回的表
列名 | 数据类型 | 说明 |
---|---|---|
transaction_sequence_num |
bigint |
生成该记录版本的事务的序列号。 |
version_sequence_num |
bigint |
版本记录序列号。此值在生成事务的版本中是唯一的。 |
database_id |
int |
有版本控制的记录的数据库 ID。 |
rowset_id |
bigint |
记录的行集 ID。 |
status |
tinyint |
指示有版本控制的记录是否已拆分为两个记录。如果此值为 0,则记录存储在一页中。如果此值为 1,则记录拆分为两个记录,且存储在两个不同页上。 |
min_length_in_bytes |
smallint |
记录的最小长度(字节)。 |
record_length_first_part_in_bytes |
smallint |
有版本控制的记录的第一部分的长度(字节)。 |
record_image_first_part |
varbinary(8000) |
版本记录的第一部分的二进制图像。 |
record_length_second_part_in_bytes |
smallint |
版本记录的第二部分的长度(字节)。 |
record_image_second_part |
varbinary(8000) |
版本记录的第二部分的二进制图像。 |
权限
需要对服务器具有 VIEW SERVER STATE 权限。
若要查看 record_image_first_part 和 record_image_second_part 列,需要 CONTROL SERVER 权限。否则,这两列将返回 NULL。
示例
下面的示例使用具有四个并发事务的测试方案,每一个事务都由事务序列号 (XSN) 标识,并在 ALLOW_SNAPSHOT_ISOLATION 和 READ_COMMITTED_SNAPSHOT 选项设置为 ON 的数据库中运行。下列事务正在运行:
- XSN-57 是序列化隔离下的更新操作。
- XSN-58 与 XSN-57 相同。
- XSN-59 是快照隔离下的选择操作。
- XSN-60 与 XSN-59 相同。
执行以下查询。
SELECT
transaction_sequence_num,
version_sequence_num,
database_id rowset_id,
status,
min_length_in_bytes,
record_length_first_part_in_bytes,
record_image_first_part,
record_length_second_part_in_bytes,
record_image_second_part
FROM sys.dm_tran_version_store;
下面是结果集:
transaction_sequence_num version_sequence_num database_id
------------------------ -------------------- -----------
57 1 9
57 2 9
57 3 9
58 1 9
rowset_id status min_length_in_bytes
-------------------- ------ -------------------
72057594038321152 0 12
72057594038321152 0 12
72057594038321152 0 12
72057594038386688 0 16
record_length_first_part_in_bytes
---------------------------------
29
29
29
33
record_image_first_part
--------------------------------------------------------------------
0x50000C0073000000010000000200FCB000000001000000270000000000
0x50000C0073000000020000000200FCB000000001000100270000000000
0x50000C0073000000030000000200FCB000000001000200270000000000
0x500010000100000002000000030000000300F800000000000000002E0000000000
record_length_second_part_in_bytes record_image_second_part
---------------------------------- ------------------------
0 NULL
0 NULL
0 NULL
0 NULL
输出显示 XSN-57 从一个表创建了三个行版本,XSN-58 从另一个表创建了一个行版本。
请参阅
参考
帮助和信息
更改历史记录
版本
历史记录
2005 年 12 月 5 日
主题
定义
**新增内容:**添加了一个示例。