前言
有网友指出,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>
<td>
<p>......</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>149</p>
</td>
<td>
<p>0xE900000001007F00</p>
</td>
<td>
<p>(1:59648:127)</p>
</td>
</tr>
<tr>
<td>
<p>150</p>
</td>
<td>
<p>0xE900000001008000</p>
</td>
<td>
<p>(1:59648:128)</p>
</td>
</tr>
<tr>
<td>
<p>151</p>
</td>
<td>
<p>0xE900000001008100</p>
</td>
<td>
<p>(1:59648:33024)</p>
</td>
</tr>
<tr>
<td>
<p>152</p>
</td>
<td>
<p>0xE900000001008200</p>
</td>
<td>
<p>(1:59648:33280)</p>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p>......</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>226</p>
</td>
<td>
<p>0xE90000000100CC00</p>
</td>
<td>
<p>(1:59648:52224)</p>
</td>
</tr>
<tr>
<td>
<p>227</p>
</td>
<td>
<p>0xE90000000100CD00</p>
</td>
<td>
<p>(1:59648:52480)</p>
</td>
</tr>
<tr>
<td>
<p>228</p>
</td>
<td>
<p>0x4B02000001000000</p>
</td>
<td>
<p>(1:587:0)</p>
</td>
</tr>
<tr>
<td>
<p>229</p>
</td>
<td>
<p>0x4B02000001000100</p>
</td>
<td>
<p>(1:587:1)</p>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p>......</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>360</p>
</td>
<td>
<p>0x4B02000001007F00</p>
</td>
<td>
<p>(1:587:127)</p>
</td>
</tr>
<tr>
<td>
<p>361</p>
</td>
<td>
<p>0x4B02000001008000</p>
</td>
<td>
<p>(1:587:128)</p>
</td>
</tr>
<tr>
<td>
<p>362</p>
</td>
<td>
<p>0x4B02000001008100</p>
</td>
<td>
<p>(1:587:33024)</p>
</td>
</tr>
<tr>
<td>
<p>363</p>
</td>
<td>
<p>0x4B02000001008200</p>
</td>
<td>
<p>(1:587:33280)</p>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p>......</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>422</p>
</td>
<td>
<p>0x4B0200000100BD00</p>
</td>
<td>
<p>(1:587:48384)</p>
</td>
</tr>
<tr>
<td>
<p>423</p>
</td>
<td>
<p>0x4B0200000100BE00</p>
</td>
<td>
<p>(1:587:48640)</p>
</td>
</tr>
<tr>
<td>
<p>424</p>
</td>
<td>
<p>0x3C05000001000000</p>
</td>
<td>
<p>(1:1340:0)</p>
</td>
</tr>
<tr>
<td>
<p>425</p>
</td>
<td>
<p>0x3C05000001000100</p>
</td>
<td>
<p>(1:1340:1)</p>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p>......</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>552</p>
</td>
<td>
<p>0x3C05000001008000</p>
</td>
<td>
<p>(1:1340:128)</p>
</td>
</tr>
<tr>
<td>
<p>553</p>
</td>
<td>
<p>0x3C05000001008100</p>
</td>
<td>
<p>(1:1340:33024)</p>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>596</p>
</td>
<td>
<p>0x3C0500000100AC00</p>
</td>
<td>
<p>(1:1340:44032)</p>
</td>
</tr>
<tr>
<td>
<p>597</p>
</td>
<td>
<p>0x9978000001000000</p>
</td>
<td>
<p>(1:39288:0)</p>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p>......</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>658</p>
</td>
<td>
<p>0x9978000001003D00</p>
</td>
<td>
<p>(1:39288:61)</p>
</td>
</tr>
下面查看表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字节表示槽号。
文章导航
【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。