三种查看SqlServer中数据物理pge页的方法
生活随笔
收集整理的這篇文章主要介紹了
三种查看SqlServer中数据物理pge页的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.根據數據記錄查看當前記錄所在的文件編號、page頁、以及在頁中的插槽。
示例如下:
SELECT top 10 %%physloc%%, sys.fn_physlocFormatter (%%physloc%%) AS RID FROM tableName?
--注意;在64位系統中sys.fn_physlocFormatter 整理出來的格式有時候不對,需要手工根據physloc來計算,計算的方法是:
以字節為單位倒敘,如
0x0702000001002200倒敘后是?
0x0022000100000207
前四位0022表示插槽號2*16+2 = 34,接下來的四位0001表示文件號,余下的00000207表示文件號2*16*16+7 = 519
DBCC TraceOn(3604) DBCC page(數據庫名,1,40995,0) DBCC TraceOff(3604)?
2.根據sys.system_internals_allocation_units(該視圖同sys.allocation_units)獲得首頁
select OBJECT_NAME(object_id) as Name,p.rows,a.type_desc ,a.total_pages,a.first_page ,a.first_iam_page,a.root_page from sys.partitions P join sys.system_internals_allocation_units a on p.partition_id = a.container_id where object_id = object_id('dbo.Dumplpt')?
首頁頁碼按照16進制形式保存,同上按字節反序后,前兩組表示2字節文件編號,后4組表示頁編號。可用如下函數來返回文件號和頁碼:
CREATE FUNCTION convert_page_nums (@page_num binary(6)) RETURNS varchar(11) AS BEGIN RETURN(convert(varchar(2), (convert(int, substring(@page_num, 6, 1)) * power(2, 8)) + (convert(int, substring(@page_num, 5, 1)))) + ':' + convert(varchar(11), (convert(int, substring(@page_num, 4, 1)) * power(2, 24)) + (convert(int, substring(@page_num, 3, 1)) * power(2, 16)) + (convert(int, substring(@page_num, 2, 1)) * power(2, 8)) + (convert(int, substring(@page_num, 1, 1)))) ) END;3.使用DBCC IND命令,示例如下:
DBCC IND(testLogDB,'dbo.Dumplpt',-1)將返回形如下結果:
PageFID PagePID IAMFID IAMPID ObjectID IndexID PartitionNumber PartitionID iam_chain_type PageType IndexLevel NextPageFID NextPagePID PrevPageFID PrevPagePID 1 197 NULL NULL 69575286 0 1 72057594038976512 In-row data 10 NULL 0 0 0 0 1 196 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 198 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 199 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 200 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 201 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 202 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 203 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 204 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 208 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 209 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 210 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 211 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 212 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0 1 213 1 197 69575286 0 1 72057594038976512 In-row data 1 0 0 0 0 0
轉載于:https://www.cnblogs.com/thaughtZhao/p/4262960.html
總結
以上是生活随笔為你收集整理的三种查看SqlServer中数据物理pge页的方法的全部內容,希望文章能夠幫你解決所遇到的問題。