加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 数据库 > MsSql > 正文

Sql server中内部函数fn_PhysLocFormatter存在解析错误详解

发布时间:2021-01-11 23:21:09 所属栏目:MsSql 来源:互联网
导读:这篇文章主要给大家介绍了关于Sql server中内部函数fn_PhysLocFormatter存在解析错误的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

前言

有网友指出,SQL Server 2012中fn_PhysLocFormatter内部函数在解析数据行记录位置时存在错误,见:http://www.itpub.net/thread-1751655-1-1.html,实际测试后发现,一是2008R2中同样存在问题,二是不仅页号解析存在问题,槽号解析也存在同样问题。

下面先查看表NT_SiteInfo的数据行记录位置。

SiteID

%%physloc%%

sys.fn_PhysLocFormatter(%%physloc%%)

1

0xE900000001000000

(1:59648:0)

23

0xE900000001000100

(1:59648:1)

24

0xE900000001000200

(1:59648:2)

</td&gt; <td&gt; <p>......</p> </td&gt; <td&gt; </td&gt; </tr&gt; <tr&gt; <td&gt; <p>149</p> </td&gt; <td&gt; <p>0xE900000001007F00</p> </td&gt; <td&gt; <p>(1:59648:127)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>150</p> </td&gt; <td&gt; <p>0xE900000001008000</p> </td&gt; <td&gt; <p>(1:59648:128)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>151</p> </td&gt; <td&gt; <p>0xE900000001008100</p> </td&gt; <td&gt; <p>(1:59648:33024)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>152</p> </td&gt; <td&gt; <p>0xE900000001008200</p> </td&gt; <td&gt; <p>(1:59648:33280)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; </td&gt; <td&gt; <p>......</p> </td&gt; <td&gt; </td&gt; </tr&gt; <tr&gt; <td&gt; <p>226</p> </td&gt; <td&gt; <p>0xE90000000100CC00</p> </td&gt; <td&gt; <p>(1:59648:52224)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>227</p> </td&gt; <td&gt; <p>0xE90000000100CD00</p> </td&gt; <td&gt; <p>(1:59648:52480)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>228</p> </td&gt; <td&gt; <p>0x4B02000001000000</p> </td&gt; <td&gt; <p>(1:587:0)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>229</p> </td&gt; <td&gt; <p>0x4B02000001000100</p> </td&gt; <td&gt; <p>(1:587:1)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; </td&gt; <td&gt; <p>......</p> </td&gt; <td&gt; </td&gt; </tr&gt; <tr&gt; <td&gt; <p>360</p> </td&gt; <td&gt; <p>0x4B02000001007F00</p> </td&gt; <td&gt; <p>(1:587:127)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>361</p> </td&gt; <td&gt; <p>0x4B02000001008000</p> </td&gt; <td&gt; <p>(1:587:128)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>362</p> </td&gt; <td&gt; <p>0x4B02000001008100</p> </td&gt; <td&gt; <p>(1:587:33024)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>363</p> </td&gt; <td&gt; <p>0x4B02000001008200</p> </td&gt; <td&gt; <p>(1:587:33280)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; </td&gt; <td&gt; <p>......</p> </td&gt; <td&gt; </td&gt; </tr&gt; <tr&gt; <td&gt; <p>422</p> </td&gt; <td&gt; <p>0x4B0200000100BD00</p> </td&gt; <td&gt; <p>(1:587:48384)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>423</p> </td&gt; <td&gt; <p>0x4B0200000100BE00</p> </td&gt; <td&gt; <p>(1:587:48640)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>424</p> </td&gt; <td&gt; <p>0x3C05000001000000</p> </td&gt; <td&gt; <p>(1:1340:0)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>425</p> </td&gt; <td&gt; <p>0x3C05000001000100</p> </td&gt; <td&gt; <p>(1:1340:1)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; </td&gt; <td&gt; <p>......</p> </td&gt; <td&gt; </td&gt; </tr&gt; <tr&gt; <td&gt; <p>552</p> </td&gt; <td&gt; <p>0x3C05000001008000</p> </td&gt; <td&gt; <p>(1:1340:128)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>553</p> </td&gt; <td&gt; <p>0x3C05000001008100</p> </td&gt; <td&gt; <p>(1:1340:33024)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; </td&gt; <td&gt; </td&gt; <td&gt; </td&gt; </tr&gt; <tr&gt; <td&gt; <p>596</p> </td&gt; <td&gt; <p>0x3C0500000100AC00</p> </td&gt; <td&gt; <p>(1:1340:44032)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; <p>597</p> </td&gt; <td&gt; <p>0x9978000001000000</p> </td&gt; <td&gt; <p>(1:39288:0)</p> </td&gt; </tr&gt; <tr&gt; <td&gt; </td&gt; <td&gt; <p>......</p> </td&gt; <td&gt; </td&gt; </tr&gt; <tr&gt; <td&gt; <p>658</p> </td&gt; <td&gt; <p>0x9978000001003D00</p> </td&gt; <td&gt; <p>(1:39288:61)</p> </td&gt; </tr&gt;

下面查看表NT_SiteInfo分配的数据页情况。

PagePID

IAMFID

IAMPID

PageType

IndexLevel

NextPagePID

PrevPagePID

238

NULL

NULL

10

NULL

0

0

233

1

238

1

0

587

0

587

1

238

1

0

1340

233

1340

1

238

1

0

30873

587

30873

1

238

1

0

0

1340

Microsoft未公开的伪列%%physloc%%,类型为Binary(8),返回表中记录的RowID,格式是:前4字节表示页号,中间2字节表示文件号,最后2字节表示槽号。

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!