【问题标题】:SQL SERVER 2008 R2 DBCC PAGE PUZZLEDSQL SERVER 2008 R2 DBCC PAGE PUZZLED
【发布时间】:2010-12-17 03:44:54
【问题描述】:

我做了一个关于 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: 70000800 01000000 03000002 001b0025 †p.......% 0000000000000010: 00616161 61616161 61616162 62626262 †.aaaaaaaaaaabbbbb 0000000000000020: 62626262 62000000 00000000 00310000 †bbbbb........1.. 0000000000000030: 00000†††††††††††††††††††††††††††††††††††††††††††...

偏移表:

行 - 偏移 0 (0x0) - 96 (0x60) 我试着解释一下:

一个字节 0x70 01110000

位 0:SQL SERVER 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 列结束偏移量 0x0025(我得到值 bbbb...)

但是,我不知道最后一个字节的含义......

请帮帮我,谢谢

【问题讨论】:

    标签: sql-server-2008 dbcc


    【解决方案1】:

    它是 14 字节的版本控制标签 [时间戳,指向 tempdb 的指针]。

    【讨论】:

    • 快照隔离使用版本控制字节数?
    • 但我从 sys.databases 中选择 *,我从未设置读取提交的快照或允许快照隔离
    • 每个数据库行在行尾最多可以使用 14 个字节用于行版本信息。行版本信息包含提交版本的事务的事务序列号和指向版本化行的指针。这 14 个字节是在第一次修改行时添加的,或者在插入新行时,在以下任何条件下:READ_COMMITTED_SNAPSHOT 或 ALLOW_SNAPSHOT_ISOLATION 选项为 ON。该表有一个触发器。正在使用多个活动结果集 (MARS)。当前正在表上运行在线索引构建操作。
    【解决方案2】:

    来自大师保罗·兰德尔

    Inside the Storage Engine: Anatomy of a page。和Extent。还有Record

    根据 cmets to last link,它是记录的一部分。

    【讨论】:

      【解决方案3】:

      每个数据库行在行尾最多可以使用 14 个字节来存储行版本信息。行版本信息包含提交版本的事务的事务序列号和指向版本化行的指针。这 14 个字节是在第一次修改行时添加的,或者在插入新行时,在以下任一条件下:

      READ_COMMITTED_SNAPSHOT 或 ALLOW_SNAPSHOT_ISOLATION 选项为 ON。

      表有一个触发器。

      正在使用多个活动结果集 (MARS)。

      在线索引构建操作当前正在表上运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        • 2013-02-07
        • 2011-06-19
        • 2012-10-05
        相关资源
        最近更新 更多