Sql server 2008 SQL SERVER 2008 R2 DBCC页面
我做了一个关于DBCC IND和DBCC page的测试。 引擎:SQL Server 2008 脚本:Sql server 2008 SQL SERVER 2008 R2 DBCC页面,sql-server-2008,dbcc,Sql Server 2008,Dbcc,我做了一个关于DBCC IND和DBCC page的测试。 引擎:SQL Server 2008 脚本: CREATE TABLE dbo.t2 ( ID int, Col1 varchar(10), Col2 varchar(20) ); INSERT INTO dbo.t2 SELECT 1,REPLICATE('a',10),REPLICATE('b',10) DECLARE @DBID int,@TableID int; SELECT @DBID=DB_ID(),@TableID
CREATE TABLE dbo.t2
(
ID int,
Col1 varchar(10),
Col2 varchar(20)
);
INSERT INTO dbo.t2 SELECT 1,REPLICATE('a',10),REPLICATE('b',10)
DECLARE @DBID int,@TableID int;
SELECT @DBID=DB_ID(),@TableID=OBJECT_ID('dbo.t2');
DBCC IND(@DBID,@TableID,-1)
--这表明:
行数据1中的127412781307151702 0 1 72057594039107584
DBCC TRACEON (3604)
--DBCC PAGE (@DBID, 1,22,3)
--then dump the page info
DBCC PAGE(@DBID, 1,274,1)
显示:
数据:
插槽0,偏移量0x60,长度51,转储样式字节
Record Type=PRIMARY\u Record Record Attributes=NULL\u位图变量\u列版本控制\u INFO
记录大小=51
内存转储@0x000000000F7EA060
0000000000000000:70000080001000000030000002 001b0025†p………%
00000000000000 10:00616161 616161 616162†。aaaaaaaaaaaabbb
00000000000000 20:62626262000000000 00310000†bbbbb…….1。。
00000000000000 30:00000††††††††††††††††††††††††††††††††††††††††††
抵销表:
行偏移
0(0x0)-96(0x60)
我试图解释:
字节一
0x70 01110000
第0位:SQL SERVER 2005/2008
第1-3位:主要数据
第4位:为空
第5位:有变量
第6位:未使用
比特7:不是鬼
第二字节
0x00:未使用
第三个字节
0x0008:偏移量8
固定长度int,我得到值1
然后是下一个字节
0300:3列
00:非空
0002:2列
变量列内偏移0x001B(我得到值aaa…)
变量列结束偏移量0x0025(我得到值bbbb…)
但是,我不知道最后一个字节的含义
请帮帮我,这是一个14字节的版本标签[timestamep,指向tempdb的指针]。来自大师Paul Randal 。和。及
根据对最后一个链接的注释,它是记录的一部分。每个数据库行可能会在行的末尾使用多达14个字节的行版本信息。行版本控制信息包含提交版本的事务的事务序列号和指向版本控制行的指针。这14个字节是在第一次修改行或插入新行时,在以下任何条件下添加的: 已启用读取\u提交\u快照或允许\u快照\u隔离选项 这张桌子有一个触发器 正在使用多个活动结果集(MARS)
联机索引生成操作当前正在表上运行。快照隔离使用版本控制字节?但我从sys.databases中选择*时,我从未设置读取提交的快照或允许快照隔离每个数据库行可能在行末尾使用多达14个字节的行版本控制信息。行版本控制信息包含提交版本的事务的事务序列号和指向版本控制行的指针。这14个字节是在第一次修改行或插入新行时,在以下任何条件下添加的:READ_COMMITTED_SNAPSHOT或ALLOW_SNAPSHOT_ISOLATION options处于启用状态。这张桌子有一个触发器。正在使用多个活动结果集(MARS)。当前正在表上运行联机索引生成操作。