sys.dm_db_page_info (Transact-SQL)

適用対象: SQL Server 2019 以降 Azure SQL Database Azure Synapse Analytics Parallel Data Warehouse

データベース内のページに関する情報を返します。 関数は、、、および を含む、ページからのヘッダー情報を含む 1 つの object_idindex_id を返します partition_id 。 この関数を使用すると、ほとんどの場合に DBCC PAGE を使用する必要がなくなります。

注意

sys.dm_db_page_info は現在、 以降でのみ SQL Server 2019 (15.x) サポートされています。

構文

sys.dm_db_page_info ( DatabaseId, FileId, PageId, Mode )  

引数

DatabaseId | NULL |既定
データベースの ID です。 DatabaseId は smallint です。 有効な入力は、データベースの ID 番号です。 既定値は NULL ですが、このパラメーターに NULL 値を送信するとエラーが発生します。

FileId | NULL |既定
ファイルの ID を指定します。 FileIdint です。 有効な入力は 、DatabaseId で指定されたデータベース内のファイルの ID 番号です。 既定値は NULL ですが、このパラメーターに NULL 値を送信するとエラーが発生します。

PageId |NULL |既定
ページの ID です。 PageIdint です。 有効な入力は 、FileId で指定されたファイル内のページの ID 番号です。 既定値は NULL ですが、このパラメーターに NULL 値を送信するとエラーが発生します。

モード| NULL |既定
関数の出力の詳細レベルを決定します。 'LIMITED' は、すべての説明列の NULL 値を返します。'DETAILED' は説明列を設定します。 DEFAULT は 'LIMITED.' です。

返されるテーブル

列名 データ型 説明
database_id INT データベース ID
file_id INT ファイル ID
page_id INT ページ ID
page_header_version INT ページ ヘッダーのバージョン
page_type INT ページの種類
page_type_desc nvarchar(64) ページの種類の説明
page_type_flag_bits nvarchar(64) ページ ヘッダーの型フラグ ビット
page_type_flag_bits_desc nvarchar(64) ページ ヘッダーの型フラグ ビットの説明
page_flag_bits nvarchar(64) ページ ヘッダーのフラグ ビット
page_flag_bits_desc nvarchar(256) ページ ヘッダーのフラグ ビットの説明
page_lsn nvarchar(64) ログ シーケンス番号/タイムスタンプ
page_level INT インデックス内のページのレベル (リーフ = 0)
object_id INT ページを所有しているオブジェクトの ID
index_id INT インデックスの ID (ヒープ データ ページの場合は 0)
partition_id bigint パーティションの ID
alloc_unit_id bigint アロケーション ユニットの ID
is_encrypted bit ページが暗号化されているかどうかを示すビット
has_checksum bit ページにチェックサム値が含されているかどうかを示すビット
チェックサム (checksum) INT データ破損の検出に使用されるチェックサム値を格納します
is_iam_pg bit ページが IAM ページであるかどうかを示すビット
is_mixed_ext bit 混合エクステントに割り当てられているかどうかを示すビット
has_ghost_records bit ページにゴースト レコードが含まれているかどうかを示すビット
ゴースト レコードは、削除のマークが付いているが、まだ削除されていないレコードです。
has_version_records bit ページに使用されるバージョン レコードがページに含まれているかどうかを示すビット高速データベース復旧
pfs_page_id INT 対応する PFS ページのページ ID
pfs_is_allocated bit 対応する PFS ページでページが割り当て済みとしてマークされているかどうかを示すビット
pfs_alloc_percent INT 対応する PFS バイトによって示される割り当て比率
pfs_status nvarchar (64) PFS バイト
pfs_status_desc nvarchar (64) PFS バイトの説明
gam_page_id INT 対応する GAM ページのページ ID
gam_status bit GAM で割り当てられているかどうかを示すビット
gam_status_desc nvarchar (64) GAM ステータスビットの説明
sgam_page_id INT 対応する SGAM ページのページ ID
sgam_status bit SGAM で割り当てられているかどうかを示すビット
sgam_status_desc nvarchar (64) SGAM ステータスビットの説明
diff_map_page_id INT 対応する差分ビットマップページのページ ID
diff_status bit Diff の状態が変更されたかどうかを示すビット
diff_status_desc nvarchar (64) Diff ステータスビットの説明
ml_map_page_id INT 対応する最小ログ記録ビットマップページのページ ID
ml_status bit ページが最小ログ記録されるかどうかを示すビット
ml_status_desc nvarchar (64) 最小ログ記録ステータスビットの説明
prev_page_file_id smallint 前のページファイル ID
prev_page_page_id INT 前のページページ ID
next_page_file_id smallint 次のページファイル ID
next_page_page_id INT 次のページページ ID
fixed_length smallint 固定サイズの行の長さ
slot_count smallint スロットの合計数 (使用済みおよび未使用)
データページの場合、この数値は行の数と同じです。
ghost_rec_count smallint ページでゴーストとしてマークされたレコードの数
ゴーストレコードとは、削除対象としてマークされているものの、まだ削除されていないレコードのことです。
free_bytes smallint ページの空きバイト数
free_data_offset INT データ領域の端にある空き領域のオフセット
reserved_bytes smallint すべてのトランザクションで予約されている空きバイト数 (ヒープの場合)
ゴースト行の数 (インデックスのリーフの場合)
reserved_bytes_by_xdes_id smallint M_reservedCnt に m_xdesID によって提供される領域
デバッグ目的のみ
xdes_id nvarchar (64) M_reserved によって提供される最新のトランザクション
デバッグ目的のみ

解説

sys.dm_db_page_info動的管理関数は page_idfile_id index_id object_id ページヘッダーに存在する、、、などのページ情報を返します。 この情報は、さまざまなパフォーマンス (ロックとラッチの競合) と破損の問題に関するトラブルシューティングとデバッグに役立ちます。

sys.dm_db_page_info 多くの場合、ステートメントの代わりに使用でき DBCC PAGE ますが、ページの本文ではなくページヘッダー情報のみが返されます。 DBCC PAGE は、ページのコンテンツ全体が必要な場合にも必要になります。

を他の Dmv と組み合わせて使用する

の重要なユースケースの1つ sys.dm_db_page_info は、ページ情報を公開する他の dmv と結合することです。 このユースケースを容易にするために、という新しい列 page_resource が追加されました。これにより、ページ情報が8バイトの16進形式で公開されます。 この列は および に追加され、必要に応じて今後他の sys.dm_exec_requests sys.sysprocesses DMV に追加される予定です。

新しい関数 は、 を入力として受け取り、 と を含む 1 sys.fn_PageResCracker page_resource つの行 database_id を出力 file_id します page_id 。 その後、この関数を使用して、 または と の間の結合を sys.dm_exec_requests 容易 sys.sysprocesses にできます sys.dm_db_page_info

アクセス許可

データベースの VIEW DATABASE STATE 権限が必要です。

A. ページのすべてのプロパティの表示

次のクエリは、指定された 、、 と既定モード ('LIMITED') の組み合わせのすべてのページ情報を含む 1 つの行 database_id file_id page_id を返します。

SELECT *  
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT)

B. 他sys.dm_db_page_info DMV でのデータの使用

次のクエリは、行に null 以外が含まれている場合に、 によって公開されるごとに 1 wait_resource sys.dm_exec_requests 行を返します。 page_resource

SELECT page_info.* 
FROM sys.dm_exec_requests AS d  
CROSS APPLY sys.fn_PageResCracker (d.page_resource) AS r  
CROSS APPLY sys.dm_db_page_info(r.db_id, r.file_id, r.page_id, 'LIMITED') AS page_info

参照

動的管理ビューと動的管理関数 (Transact-SQL)
Transact-(データベース関連の動的管理SQL)
sys.dm_exec_requests (Transact-SQL)
sys.fn_PageResCracker