SQL SERVER 2008 新功能:physical row locator function
今天同事問我個問題
Page ID = 0001:0015fdb3
0015fdb3 這個值 可以和那個系統表的那個欄位的值對應起來。
我還一時不知道
GOOGLE了下。
找到一篇不錯的文章:
內容如下:
One of the drawbacks of not being in the SQL team at Microsoft any longer is that I don't know about all the undocumented features in the next release - I have to hunt around for them like everyone else :-(
So I was poking about in SSMS in 2008 CTP-6 and noticed a function called sys.fn_PhysLocCracker that I'd never heard of. Doing an sp_helptext on it gets the following output:
-- Name: sys.fn_PhysLocCracker
--
-- Description:
-- Cracks the output of %%physloc%% virtual column
--
-- Notes:
-------------------------------------------------------------------------------
create function sys.fn_PhysLocCracker (@physical_locator binary (8))
returns @dumploc_table table
(
[file_id] int not null,
[page_id] int not null,
[slot_id] int not null
)
as
begindeclare @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)))
insert into @dumploc_table values (@file_id, @page_id, @slot_id)
return
end
Cool - but something else I've never heard of %%physloc%% - what's that? After playing around for a while, I figured out how to make it work. Just to be confusing, there's another identical version of the function called sys.fn_PhysLocFormatter - and that's the only one I could get to work. Here's an example:
CREATE TABLE TEST (c1 INT IDENTITY, c2 CHAR (4000) DEFAULT 'a');
GO
INSERT INTO TEST DEFAULT VALUES;
INSERT INTO TEST DEFAULT VALUES;
INSERT INTO TEST DEFAULT VALUES;
GOSELECT sys.fn_PhysLocFormatter (%%physloc%%) AS [Physical RID], * FROM TEST;
GOPhysical RID c1
----------------- -----------
(1:411:0) 1
(1:411:1) 2
(1:413:0) 3
It's a physical-record locator function! Undocumented and unsupported (obviously), but hey, some of the best features are :-) It gives the database file, page within the file, and slot number on the page in the format (file:page:slot). I can think of a *bunch* of uses for this which I'll be exploring over the next few months
.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8183550/viewspace-693658/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Paging Records Using SQL Server 2005 Database - ROW_NUMBER FunctionSQLServerDatabaseFunction
- SQL Server 2008中有關XML的新功能-Mssql資料庫教程SQLServerXML資料庫
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- SQL SERVER 2008安全配置SQLServer
- SQL Server 2008 過期SQLServer
- 安裝sql server 2008SQLServer
- SQL Server 2008 安全更改SQLServer
- 微軟之日 --- SQL Server 2008微軟SQLServer
- SQL Server 2014新功能PPTSQLServer
- 怎樣從SQL Server2008升級到SQL Server 2008 r2SQLServer
- SQL Server 2008快照備份SQLServer
- SQL Server 2008 優化工具SQLServer優化
- SQL Server 2008備份概述SQLServer
- sql server 2008 是否值得期待?SQLServer
- SQL Server 2008密碼策略SQLServer密碼
- SQL Server 2008 sqlcmd 的使用SQLServer
- SQL Server2008引擎元件SQLServer元件
- Installing SQL Server 2008 on a Windows Server 2008 ClusterSQLServerWindows
- Inside SQL Server系列新版,SQL Server 2008 Internals目錄IDESQLServer
- SQL Server中row_number函式的常見用法SQLServer函式
- Microsoft SQL Server 2008中SQL Server服務啟動故障問題ROSSQLServer
- SQL SERVER 2008的top增強SQLServer
- SQL Server 2008指定恢復模式SQLServer模式
- SQL Server 2008新特性稀疏列SQLServer
- SQL Server 2008 引入了“稀疏列”SQLServer
- SQL Server 2008稀疏列的使用SQLServer
- SQL Server 2008 建立非聚集索引SQLServer索引
- SQL Server 2008 MERGE語法SQLServer
- SQL Server 2008 查詢優化SQLServer優化
- SQL Server 2008恢復模式概述SQLServer模式
- SQL Server 2008 備份壓縮SQLServer
- SQL Server 2008 RTM釋出拉SQLServer
- 巧用JDBC連線SQL SERVER 2008JDBCSQLServer
- SQL Server 2008各版本區別SQLServer
- SQL Server 2008 新增功能 -- 複製SQLServer
- 初探SQL Server 2008 Change TrackingSQLServer
- SQL Server 2008香港釋出會SQLServer
- SQL Server 2008升級顧問SQLServer