亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

Sql server中內部函數fn_PhysLocFormatter存在解析錯誤詳解

2024-08-31 01:05:06
字體:
來源:轉載
供稿:網友

前言

有網友指出,SQL Server 2012中fn_PhysLocFormatter內部函數在解析數據行記錄位置時存在錯誤,見:http://www.itpub.net/thread-1751655-1-1.html,實際測試后發現,一是2008R2中同樣存在問題,二是不僅頁號解析存在問題,槽號解析也存在同樣問題。

下面先查看表NT_SiteInfo的數據行記錄位置。

select SiteID,%%physloc%%,sys.fn_PhysLocFormatter(%%physloc%%) from NT_SiteInfo

 

SiteID

%%physloc%%

sys.fn_PhysLocFormatter(%%physloc%%)

1

0xE900000001000000

(1:59648:0)

23

0xE900000001000100

(1:59648:1)

24

0xE900000001000200

(1:59648:2)

 

......

 

149

0xE900000001007F00

(1:59648:127)

150

0xE900000001008000

(1:59648:128)

151

0xE900000001008100

(1:59648:33024)

152

0xE900000001008200

(1:59648:33280)

 

......

 

226

0xE90000000100CC00

(1:59648:52224)

227

0xE90000000100CD00

(1:59648:52480)

228

0x4B02000001000000

(1:587:0)

229

0x4B02000001000100

(1:587:1)

 

......

 

360

0x4B02000001007F00

(1:587:127)

361

0x4B02000001008000

(1:587:128)

362

0x4B02000001008100

(1:587:33024)

363

0x4B02000001008200

(1:587:33280)

 

......

 

422

0x4B0200000100BD00

(1:587:48384)

423

0x4B0200000100BE00

(1:587:48640)

424

0x3C05000001000000

(1:1340:0)

425

0x3C05000001000100

(1:1340:1)

 

......

 

552

0x3C05000001008000

(1:1340:128)

553

0x3C05000001008100

(1:1340:33024)

 

 

 

596

0x3C0500000100AC00

(1:1340:44032)

597

0x9978000001000000

(1:39288:0)

 

......

 

658

0x9978000001003D00

(1:39288:61)

 

下面查看表NT_SiteInfo分配的數據頁情況。

dbcc ind(wjgk,nt_siteinfo,0)

 

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字節表示槽號。

對照上面的實際數據,可以發現sys.fn_PhysLocFormatter在解析記錄位置時,既有采用高字節在前的BIG_ENDIAN格式,又有采用低字節在前的LITTLE_ENDIAN格式,造成采用高字節在前的BIG_ENDIAN格式解析的數據錯誤:

頁號解析:
E9000000解析為59648(E900),錯誤,實際應為233(E9)

4B020000解析為576(24B),正確

3C050000解析為1340(53C),正確

99780000解析為39288(9978),錯誤,實際應為30873(7899)

槽號解析:

8000解析為128(0080),正確

8100解析為33024(8100),錯誤,應為129(0081)

下面給出錯誤原因。

先看下sys.fn_PhysLocFormatter函數的定義:

select OBJECT_DEFINITION(object_id('sys.fn_PhysLocFormatter'))go --------------------------------------------------------------------------------- Name: sys.fn_PhysLocFormatter---- Description:-- Formats the output of %%physloc%% virtual column---- Notes:-------------------------------------------------------------------------------create function sys.fn_PhysLocFormatter (@physical_locator binary (8)) returns varchar (128)as begin declare @page_id binary (4) declare @file_id binary (2) declare @slot_id binary (2) -- Page ID is the first four bytes, then 2 bytes of page ID, then 2 bytes of slot -- select @page_id = convert (binary (4), reverse (substring (@physical_locator, 1, 4))) select @file_id = convert (binary (2), reverse (substring (@physical_locator, 5, 2))) select @slot_id = convert (binary (2), reverse (substring (@physical_locator, 7, 2))) return '(' + cast (cast (@file_id as int) as varchar) + ':' + cast (cast (@page_id as int) as varchar) + ':' + cast (cast (@slot_id as int) as varchar) + ')' end

再看下reverse函數:

select reverse('工人')----人工 (1 行受影響) select reverse('12345工人')---------人工54321 (1 行受影響) select reverse('工12345人')---------人54321工 (1 行受影響)

結論:問題出在reverse函數上。

reverse函數的作用是字符反轉,而不是字節反轉,當遇到81-FE之間的字節時,被認為是雙字節字符而組合在一起參與反轉操作,造成了錯誤。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。

 

注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本最新高清不卡中文字幕| 欧美另类交人妖| 7m精品福利视频导航| 欧美激情视频一区二区三区不卡| 日韩欧美在线免费观看| 中文字幕亚洲情99在线| 91精品国产91久久久久| 久久99国产精品久久久久久久久| 欧美理论片在线观看| 色综久久综合桃花网| 亚洲二区在线播放视频| 国产精品日韩电影| 美女999久久久精品视频| 久久国产视频网站| 日韩a**中文字幕| 欧美日韩成人在线视频| 亚洲影视九九影院在线观看| 久久久精品一区二区三区| 精品毛片三在线观看| 国产精品伦子伦免费视频| 欧美午夜激情在线| 精品久久久在线观看| 亚洲成色777777女色窝| 久久久久国产一区二区三区| 亚洲综合日韩中文字幕v在线| 高清视频欧美一级| 日韩av有码在线| 欧美激情极品视频| 日本欧美在线视频| 911国产网站尤物在线观看| 亚洲精品短视频| 在线色欧美三级视频| xvideos国产精品| 日韩精品免费观看| 久久久这里只有精品视频| 综合国产在线视频| 国产精品黄页免费高清在线观看| 欧美激情视频在线观看| 久久久久久国产精品三级玉女聊斋| 亚洲第一福利在线观看| 亚洲欧美国产精品专区久久| 亚洲精品中文字| 欧美超级乱淫片喷水| 色av中文字幕一区| 精品成人在线视频| 亚洲91精品在线| 欧美日韩一区二区免费在线观看| 在线视频免费一区二区| 国产91色在线|| 亚洲石原莉奈一区二区在线观看| 精品久久久久久久久久国产| 欧美精品电影免费在线观看| 青青草国产精品一区二区| 精品久久久久久中文字幕一区奶水| 日韩精品免费在线| 欧美国产精品人人做人人爱| 国产精品永久免费在线| 91丨九色丨国产在线| 91香蕉嫩草影院入口| 欧美专区第一页| 日韩麻豆第一页| 成人女保姆的销魂服务| 亚洲成av人乱码色午夜| 91免费综合在线| 亚洲最大的网站| 1769国内精品视频在线播放| 午夜精品久久久久久久久久久久久| 91精品国产高清久久久久久91| 欧美日本高清视频| 日本免费久久高清视频| 国产成人精品久久亚洲高清不卡| 中文字幕亚洲激情| 国产成人精品久久亚洲高清不卡| 欧美性色19p| 欧美性生交xxxxxdddd| 日韩电影大片中文字幕| 国产日韩精品综合网站| 亚洲www永久成人夜色| 国产精品久久久久久久午夜| 136fldh精品导航福利| 在线视频欧美日韩精品| 久久伊人91精品综合网站| 国产欧美日韩视频| 亚洲国产97在线精品一区| 日韩av在线网页| 成人在线激情视频| 精品国产依人香蕉在线精品| 久久偷看各类女兵18女厕嘘嘘| 中文字幕日韩视频| 国产精品日韩在线| 欧美日韩在线第一页| 国产香蕉一区二区三区在线视频| 自拍视频国产精品| 国内外成人免费激情在线视频| 欧美一区二区三区免费观看| 热re91久久精品国99热蜜臀| 国产精品国产三级国产专播精品人| 97在线免费观看视频| 性夜试看影院91社区| 亚洲少妇激情视频| 欧美激情2020午夜免费观看| 国产一区二区色| 夜夜嗨av一区二区三区四区| 91老司机精品视频| 国产精品福利网| 菠萝蜜影院一区二区免费| 少妇高潮久久77777| 欧美乱大交做爰xxxⅹ性3| 欧美自拍视频在线| 97久久精品在线| 亚洲欧洲一区二区三区在线观看| 中文字幕亚洲综合久久| 国产精品久久久久久久久影视| 国产精品精品一区二区三区午夜版| 久久久91精品国产一区不卡| 国产精品嫩草影院一区二区| 国产精品精品国产| 欧美日韩激情美女| 日本精品久久久| 久久色在线播放| 久99九色视频在线观看| 欧美剧在线观看| 精品亚洲一区二区三区在线观看| 欧美激情视频在线| 国产大片精品免费永久看nba| 精品福利樱桃av导航| 国产精品视频大全| 欧美精品在线免费播放| 欧美在线日韩在线| 欧美日韩激情美女| 4k岛国日韩精品**专区| 亚洲影院在线看| www.亚洲人.com| 国产日韩在线播放| 久久久久久久一| 国产精品av免费在线观看| 日韩精品久久久久久福利| 精品国产乱码久久久久久虫虫漫画| 国产精品视频久久久| 国产日韩在线观看av| 国产精品国产亚洲伊人久久| 91精品久久久久久久久久入口| 欧美中文在线观看国产| 亚洲深夜福利视频| 国自产精品手机在线观看视频| 色一区av在线| 亚洲2020天天堂在线观看| 亚洲精品网站在线播放gif| 日本三级久久久| 久久中国妇女中文字幕| 中文字幕自拍vr一区二区三区| 亚洲人成在线一二| 亚洲天堂网在线观看| 亚洲人免费视频| 68精品国产免费久久久久久婷婷| 午夜剧场成人观在线视频免费观看| 一区二区在线视频播放| 国产91色在线|免| 国产精品 欧美在线| 日韩亚洲一区二区| 亚洲最大的成人网| 国产欧美一区二区白浆黑人| 欧美人交a欧美精品| 久久久视频免费观看|