我做了一个关于 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=OBJECT_ID('dbo.t2');
DBCC IND(@DBID,@TableID,-1)
--这显示:1 274 1 278 1307151702 0 1 72057594039107584 行内数据 1
DBCC TRACEON (3604)
--DBCC PAGE (@DBID, 1,22,3)
--then dump the page info
DBCC PAGE(@DBID, 1,274,1)
显示:
数据:
插槽 0,偏移量 0x60,长度 51,DumpStyle BYTE
记录类型 = PRIMARY_RECORD 记录属性 = NULL_BITMAP VARIABLE_COLUMNS VERSIONING_INFO 记录大小 = 51 内存转储 @0x000000000F7EA060
0000000000000000 : 700000000000000 . 0000000000000030: 00000 ††††††††††††††††††††††††††††††††††††††††††...
偏移表:
行 - 偏移量 0 (0x0) - 96 (0x60) 我试着解释一下:
字节一 0x70 01110000
位 0:SQL 服务器 2005/2008
位 1-3:主要数据
位 4:有 NULL
位 5:有 VAR
位 6:未使用
位 7:不是幽灵
第二个字节
0x00:未使用
第三字节
0x0008 : 偏移量 8
固定长度 int ,我得到值1
然后下一个字节
0300 : 3 列
00:不为空
0002 :2 列
var column endoffset 0x001B(我得到值 aaa....)
var column end offset 0x0025(我得到值 bbbb ...)
但是,我不知道最后一个字节的含义....
请帮助我,谢谢