今まで、sys.fn_PhysLocFormatter を使用したページ情報の取得を何回か、ブログで紹介させていただきました。
インテリセンスで sys.fn_PhysLocCracker という似たような関数が表示されていたのですが、今まで使用したことがありませんでした。
試しにこの関数を使ってみたところこちらのほうがいろいろと取り回しがよさそうだったので少し紹介してみたいと思います。
■sys.fn_PhysLocCracker を使用したページ番号の取得
sys.fn_PhysLocFormatter は varchar の値を返しましたが、sys.fn_PhysLocCracker はテーブルを返します。
そのため、CROSS APPLY を使用して実行します。
以下のようなクエリで実行可能です。
SELECT * FROM Table_1 |
sys.fn_PhysLocFormatter の場合はこのような形式でページ情報を取得できました。
sys.fn_PhysLocCracker では file_id / page_id / slot_id が独立した列として取得されますので、特定のページに含まれるデータのみを抽出といったことも可能です。
便利な関数があるものですね~。