我正在学习PAGE结构,目前我已经停留在NULL位图。
create table dbo.ro
(
ID int not null,
Col1 varchar(8000) null,
Col2 varchar(8000) null
);
insert into dbo.ro(ID, Col1, Col2) values
(1,replicate('a',8000),replicate('b',8000));
所以目前没有NULL值,让我们看看DBCC信息:
DBCC IND(test, 'ro', 1);
DBCC PAGE('test',1, 408,3);
所以我对以下部分感兴趣 30000800 01000000 03005002
为什么它是50而不是00?记录中没有NULL值...
答案 0 :(得分:2)
正确的答案在评论中我赞成,但你还有一个问题,所以也许我应该解释一下这是什么意思。
底部三位为0.其他位应忽略。
如果您将50扩展为二进制文件,则会得到01010 000 。 唯一感兴趣的位是底部三位,这些对应于非空的3,2,1列。 应忽略其他位表示服务器知道列的数量,它是3,并且它只关心此掩码中的3位。其他位未设置,因此应忽略它们。它们只含有垃圾。