在SQL Server 2005裡可以通過%%lockress%%得到資料行對應的實體路徑資訊,在SQL Server2008裡還可以通過%%physloc%% 得到,用sys.fn_PhysLocFormatter 將得到的binary資料轉換後就是%%lockress%% 的值,但是,這幾個在MSDN裡都沒有介紹.
%%lockress%% 得到值包含了3部分:檔案編號,頁編號和位置編號,並以冒號分隔.
select *,%%lockres%% as phys from dbTest
得到的結果是:
id name phys
----------- ---------- --------------------------------
1 A 1:77:0
2 B 1:77:1
3 C 1:77:2
在SQL Server2008裡執行
select *,%%physloc%% as phys from dbTest
得到的結果是:
id name phys
----------- ---------- ------------------
1 A 0x7300000001000000
2 B 0x7300000001000100
3 C 0x7300000001000200
在SQL Server2008裡執行
select *,sys.fn_PhysLocFormatter(%%physloc%%) as physfrom dbTest
得到的結果是:
id name phys
----------- ---------- ----------------------------
1 A (1:115:0)
2 B (1:115:1)
3 C (1:115:2)
因為SQL Sever2005和SQL Server2008在不同的機器上,所以得到的物理資訊是不一樣的,得到的這個資訊,相當於是一張表的一個隱藏的唯一鍵列,所以通過這個可以很方便的處理一些問題,比如刪除沒有主鍵表裡的重複資料,但是MSDN裡沒有相關的說明,所以使用時要考慮一些風險.