sys.dm_db_page_info (Transact-SQL)
適用対象: SQL Server 2019 (15.x)
Azure SQL Database
Azure SQL Managed Instance
データベースでのページに関する情報が返されます。 この関数では、object_id
、index_id
、partition_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 です。 DatabaseId は smallint です。 有効な入力は、データベースの ID 番号です。 既定値は NULL ですが、このパラメーターに NULL 値を送信するとエラーが発生します。
FileId | NULL | DEFAULT
ファイルのID。 FileId は int です。有効な入力は、DatabaseId で 指定されたデータベース内のファイルの ID 番号です。 既定値は NULL ですが、このパラメーターに NULL 値を送信するとエラーが発生します。
PageId | NULL | DEFAULT
ページの ID PageId は int です。有効な入力は、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_id
、file_id
、index_id
、object_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_id
、file_id
、page_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_id
、file_id
、page_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;