次の方法で共有


sys.dm_db_page_info (Transact-SQL)

適用対象: SQL Server 2019 (15.x) Azure SQL Database Azure SQL Managed Instance

データベースでのページに関する情報が返されます。 この関数では、object_idindex_idpartition_id など、ページからのヘッダー情報を含む行が返されます。 この関数を使用すると、ほとんどの場合に DBCC PAGE を使用する必要がなくなります。

Note

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

構文

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

引数

DatabaseId | NULL | DEFAULT

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

FileId | NULL | DEFAULT

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

PageId | NULL | DEFAULT

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

Mode | NULL | DEFAULT

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

返されるテーブル

列名 データ型 説明
database_id int データベース ID。

Azure SQL Database では、値は 1 つのデータベースまたは Elastic Pool 内で一意ですが、論理サーバー内では一意ではありません。
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_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_status_desc nvarchar(64) ステータスの説明。
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_idindex_idobject_idなどの情報を返します。 この情報は、さまざまなパフォーマンス (ロックとラッチの競合) や破損の問題のトラブルシューティングとデバッグに役立ちます。

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

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

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

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

アクセス許可

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

SQL Server 2022 以降でのアクセス許可

データベースに対する VIEW DATABASE PERFORMANCE STATE アクセス許可が必要です。

A. ページのプロパティを表示します。

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

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

B. 他の DMV でsys.dm_db_page_infoを使用する

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

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;

関連項目