--- title: "sys.dm_db_page_info (Transact-SQL) | Microsoft Docs" ms.custom: "" ms.date: "09/18/2018" ms.prod: sql ms.reviewer: "" ms.technology: system-objects ms.topic: conceptual f1_keywords: - "sys.dm_db_page_info" - "sys.dm_db_page_info_TSQL" - "dm_db_page_info" - "dm_db_page_info_TSQL" - "dbcc page" dev_langs: - "TSQL" helpviewer_keywords: - "sys.dm_db_page_info dynamic management view" author: bluefooted ms.author: "pamela" manager: amitban monikerRange: ">=sql-server-ver15||=sqlallproducts-allversions" --- # sys.dm_db_page_info (Transact-SQL) [!INCLUDE[tsql-appliesto-ssver15-asdb-xxxx-xxx](../../includes/tsql-appliesto-ssver15-asdb-xxxx-xxx.md)] Returns information about a page in a database. The function returns one row that contains the header information from the page, including the `object_id`, `index_id`, and `partition_id`. This function replaces the need to use `DBCC PAGE` in most cases. > [!NOTE] > `sys.dm_db_page_info` is currently supported only in [!INCLUDE[sql-server-2019](../../includes/sssqlv15-md.md)] and later. ## Syntax ``` sys.dm_db_page_info ( DatabaseId, FileId, PageId, Mode ) ``` ## Arguments *DatabaseId* | NULL | DEFAULT Is the ID of the database. *DatabaseId* is **smallint**. Valid input is the ID number of a database. The default is NULL, however sending a NULL value for this parameter will result in an error. *FileId* | NULL | DEFAULT Is the ID of the file. *FileId* is **int**. Valid input is the ID number of a file in the database specified by *DatabaseId*. The default is NULL, however sending a NULL value for this parameter will result in an error. *PageId* | NULL | DEFAULT Is the ID of the page. *PageId* is **int**. Valid input is the ID number of a page in the file specified by *FileId*. The default is NULL, however sending a NULL value for this parameter will result in an error. *Mode* | NULL | DEFAULT Determines the level of detail in the output of the function. 'LIMITED' will return NULL values for all description columns, 'DETAILED' will populate description columns. DEFAULT is 'LIMITED.' ## Table Returned |Column name|Data type|Description| |-----------------|---------------|-----------------| |database_id |int |Database ID | |file_id |int |File ID | |page_id |int |Page ID | |page_header_version |int |Page header version | |page_type |int |Page Type | |page_type_desc |nvarchar(64) |Description of the page type | |page_type_flag_bits |nvarchar(64) |Type Flag bits in page header | |page_type_flag_bits_desc |nvarchar(64) |Type flag bits description in page header | |page_flag_bits |nvarchar(64) |Flag bits in page header | |page_flag_bits_desc |nvarchar(256) |Flag bits description in page header | |page_lsn |nvarchar(64) |Log sequence number / timestamp | |page_level |int |Level of the page in index (leaf = 0) | |object_id |int |ID of the object owning the page | |index_id |int |ID of the index (0 for heap data pages) | |partition_id |bigint |ID of the partition | |alloc_unit_id |bigint |ID of the allocation unit | |is_encrypted |bit |Bit to indicate whether or not the page is encrypted | |has_checksum |bit |Bit to indicate whether or not the page has a checksum value | |checksum |int |Stores the checksum value that is used to detect data corruption | |is_iam_pg |bit |Bit to indicate whether or not the page is an IAM page  | |is_mixed_ext |bit |Bit to indicate if allocated in a mixed extent | |has_ghost_records |bit |Bit to indicate if the page contains ghost records
A ghosted record is one that has been marked for deletion but has yet to be removed.| |has_version_records |bit |Bit to indicate if the page contains version records used for [Accelerated Database Recovery](../backup-restore/restore-and-recovery-overview-sql-server.md#adr) | |pfs_page_id |int |Page ID of corresponding PFS page | |pfs_is_allocated |bit |Bit to indicate whether or not the page is marked as allocated in the corresponding PFS page | |pfs_alloc_percent |int |Allocation percent as indicated by the corresponding PFS byte | |pfs_status |nvarchar(64) |PFS byte | |pfs_status_desc |nvarchar(64) |Description of the PFS byte | |gam_page_id |int |Page ID of the corresponding GAM page | |gam_status |bit |Bit to indicate if allocated in GAM | |gam_status_desc |nvarchar(64) |Description of the GAM status bit | |sgam_page_id |int |Page ID of the corresponding SGAM page | |sgam_status |bit |Bit to indicate if allocated in SGAM | |sgam_status_desc |nvarchar(64) |Description of the SGAM status bit | |diff_map_page_id |int |Page ID of the corresponding differential bitmap page | |diff_status |bit |Bit to indicate if diff status is changed | |diff_status_desc |nvarchar(64) |Description of the diff status bit | |ml_map_page_id |int |Page ID of the corresponding minimal logging bitmap page | |ml_status |bit |Bit to indicate if the page is minimally logged | |ml_status_desc |nvarchar(64) |Description of the minimal logging status bit | |prev_page_file_id |smallint |Previous page file ID | |prev_page_page_id |int |Previous page page ID | |next_page_file_id |smallint |Next page file ID | |next_page_page_id |int |Next page page ID | |fixed_length |smallint |Length of fixed size rows | |slot_count |smallint |Total number of slots (used and unused)
For a data page, this number is equivalent to the number of rows. | |ghost_rec_count |smallint |Number of records marked as ghost on the page
A ghosted record is one that has been marked for deletion but has yet to be removed. | |free_bytes |smallint |Number of free bytes on the page | |free_data_offset |int |Offset of free space at end of data area | |reserved_bytes |smallint |Number of free bytes reserved by all transactions (if heap) 
Number of ghosted rows (if index leaf) | |reserved_bytes_by_xdes_id |smallint |Space contributed by m_xdesID to m_reservedCnt
For debugging purposes only | |xdes_id |nvarchar(64) |Latest transaction contributed by m_reserved
For debugging purposes only | |||| ## Remarks The `sys.dm_db_page_info` dynamic management function returns page information like `page_id`, `file_id`, `index_id`, `object_id` etc. that are present in a page header. This information is useful for troubleshooting and debugging various performance (lock and latch contention) and corruption issues. `sys.dm_db_page_info` can be used in place of the `DBCC PAGE` statement in many cases, but it returns only the page header information, not the body of the page. `DBCC PAGE` will still be needed for use cases where the entire contents of the page are required. ## Using in Conjunction With Other DMVs One of the important use cases of `sys.dm_db_page_info` is to join it with other DMVs that expose page information. To facilitate this use case, a new column called `page_resource` has been added which exposes page information in an 8-byte hex format. This column has been added to `sys.dm_exec_requests` and `sys.sysprocesses` and will be added to other DMVs in the future as needed. A new function, `sys.fn_PageResCracker`, takes the `page_resource` as input and outputs a single row that contains `database_id`, `file_id` and `page_id`. This function can then be used to facilitate joins between `sys.dm_exec_requests` or `sys.sysprocesses` and `sys.dm_db_page_info`. ## Permissions Requires the `VIEW DATABASE STATE` permission in the database. ## Examples ### A. Displaying all the properties of a page The following query returns one row with all the page information for a given `database_id`, `file_id`, `page_id` combination with default mode ('LIMITED') ```sql SELECT * FROM sys.dm_db_page_info (5, 1, 15, DEFAULT) ``` ### B. Using sys.dm_db_page_info with other DMVs The following query returns one row per `wait_resource` exposed by `sys.dm_exec_requests` when the row contains a non-null `page_resource` ```sql 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 ``` ## See Also [Dynamic Management Views and Functions (Transact-SQL)](~/relational-databases/system-dynamic-management-views/system-dynamic-management-views.md) [Database Related Dynamic Management Views (Transact-SQL)](../../relational-databases/system-dynamic-management-views/database-related-dynamic-management-views-transact-sql.md) [sys.dm_exec_requests (Transact-SQL)](../../relational-databases/system-dynamic-management-views/sys-dm-exec-requests-transact-sql.md) [sys.fn_PageResCracker](../../relational-databases/system-functions/sys-fn-pagerescracker-transact-sql.md)