SQLServer 页中数据行存储格式解析

本文解析了一个具体的数据库页结构,详细解读了状态位、定长数据、null位图、变长列数量等关键信息,并展示了如何从十六进制数据中提取实际内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



DBCC TRACEON(3604)

DBCC PAGE(ZWS,1,179,1)

30 00 0800 7b000000 04        0004    0300   1800 1800 1c00           4142434445 43434343


状态位A:0X30(十六进制)=110000(二进制)==>0011 0000==>bit7bit6bit5bit4 bit3bit2bit1bit0 -->bit5=1:行中有变长列
状态位B:0X00(十六进制)-->保留
定长数据长度:0X0800(十六进制)=0X0008(十六进制)=8(十进制)
定长数据内容:0X7b000000(十六进制)=0X0000007b(十六进制)=123(十进制)
总列数:0X0400(十六进制)=0X0004(十六进制)=4(十进制)
null位图:0X04(十六进制)=0100(二进制)-->0010-->即第三列为空
变长列数量:0X0300(十六进制)=0X0003(十六进制)=3(十进制)
列偏移矩阵:0X1800(十六进制)=0X0018(十六进制)-->24(十进制)即第24个字节开始存储第一个变长列
           0X1800(十六进制)=0X0018(十六进制)-->24(十进制)即第24个字节开始存储第一个变长列    -- 列为空
           0X1c00(十六进制)=0X001c(十六进制)-->28(十进制)即第28个字节开始存储第一个变长列    
变长列内容:4142434445--ABCDE

           43434343--CCCC

备注:字符串可以按顺序读,数字须转换。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值