sys.dm_db_page_info (Transact-SQL)
SE APLICA A:
SQL Server 2019 y versiones
posteriores Azure SQL Database
Azure Synapse Analytics Parallel
Data Warehouse
Devuelve información sobre una página de una base de datos. La función devuelve una fila que contiene la información de encabezado de la página, object_id index_id incluidos , y partition_id . Esta función reemplaza la necesidad de usar DBCC PAGE en la mayoría de los casos.
Nota
sys.dm_db_page_info actualmente solo se admite en SQL Server 2019 (15.x) y versiones posteriores.
Sintaxis
sys.dm_db_page_info ( DatabaseId, FileId, PageId, Mode )
Argumentos
DatabaseId | Null | PREDETERMINADO
Es el identificador de la base de datos. DatabaseId es smallint. La entrada válida es el número de identificador de una base de datos. El valor predeterminado es NULL, pero el envío de un valor NULL para este parámetro producirá un error.
FileId | Null | PREDETERMINADO
Identificador del archivo. FileId es int. La entrada válida es el número de identificador de un archivo en la base de datos especificada por DatabaseId. El valor predeterminado es NULL, pero el envío de un valor NULL para este parámetro producirá un error.
PageId | Null | PREDETERMINADO
Es el identificador de la página. PageId es int. La entrada válida es el número de identificador de una página del archivo especificado por FileId. El valor predeterminado es NULL, pero el envío de un valor NULL para este parámetro producirá un error.
Modo | Null | PREDETERMINADO
Determina el nivel de detalle en la salida de la función. 'LIMITED' devolverá valores NULL para todas las columnas de descripción; "DETAILED" rellenará las columnas de descripción. DEFAULT es "LIMITED".
Tabla devuelta
| Nombre de la columna | Tipo de datos | Descripción |
|---|---|---|
| database_id | int | Identificador de base de datos |
| file_id | int | Id. de archivo |
| page_id | int | Identificador de página |
| page_header_version | int | Versión del encabezado de página |
| page_type | int | Tipo de página |
| page_type_desc | nvarchar(64) | Descripción del tipo de página |
| page_type_flag_bits | nvarchar(64) | Bits de marca de tipo en el encabezado de página |
| page_type_flag_bits_desc | nvarchar(64) | Descripción de bits de marca de tipo en el encabezado de página |
| page_flag_bits | nvarchar(64) | Marcar bits en el encabezado de página |
| page_flag_bits_desc | nvarchar(256) | Descripción de los bits de marca en el encabezado de página |
| page_lsn | nvarchar(64) | Número de secuencia de registro/marca de tiempo |
| page_level | int | Nivel de la página en el índice (hoja = 0) |
| object_id | int | Identificador del objeto que posee la página |
| index_id | int | Identificador del índice (0 para las páginas de datos del montón) |
| partition_id | bigint | Identificador de la partición |
| alloc_unit_id | bigint | Identificador de la unidad de asignación |
| is_encrypted | bit | Bit para indicar si la página está cifrada o no |
| has_checksum | bit | Bit para indicar si la página tiene o no un valor de suma de comprobación |
| suma de comprobación | int | Almacena el valor de suma de comprobación que se usa para detectar daños en los datos. |
| is_iam_pg | bit | Bit para indicar si la página es o no una página IAM |
| is_mixed_ext | bit | Bit para indicar si se asigna en una extensión mixta |
| has_ghost_records | bit | Bit para indicar si la página contiene registros fantasma Un registro fantasma es aquel que se ha marcado para su eliminación, pero aún no se ha quitado. |
| has_version_records | bit | Bit para indicar si la página contiene registros de versión usados para Recuperación acelerada de la base de datos |
| pfs_page_id | int | Identificador de página de la página PFS correspondiente |
| pfs_is_allocated | bit | Bit para indicar si la página está marcada o no como asignada en la página PFS correspondiente. |
| pfs_alloc_percent | int | Porcentaje de asignación indicado por el byte PFS correspondiente |
| pfs_status | nvarchar(64) | Byte PFS |
| pfs_status_desc | nvarchar(64) | Descripción del byte PFS |
| gam_page_id | int | Identificador de página de la página GAM correspondiente |
| gam_status | bit | Bit para indicar si se ha asignado en GAM |
| gam_status_desc | nvarchar(64) | Descripción del bit de estado de GAM |
| sgam_page_id | int | Identificador de página de la página SGAM correspondiente |
| sgam_status | bit | Bit para indicar si se ha asignado en SGAM |
| sgam_status_desc | nvarchar(64) | Descripción del bit de estado SGAM |
| diff_map_page_id | int | Identificador de página de la página de mapa de bits diferencial correspondiente |
| diff_status | bit | Bit para indicar si se cambia el estado de diferencia |
| diff_status_desc | nvarchar(64) | Descripción del bit de estado de diferencia |
| ml_map_page_id | int | Identificador de página de la página de mapa de bits de registro mínima correspondiente |
| ml_status | bit | Bit para indicar si la página se registra mínimamente |
| ml_status_desc | nvarchar(64) | Descripción del bit de estado de registro mínimo |
| prev_page_file_id | SMALLINT | Identificador de archivo de página anterior |
| prev_page_page_id | int | Identificador de página anterior |
| next_page_file_id | SMALLINT | Id. de archivo de página siguiente |
| next_page_page_id | int | Identificador de página siguiente |
| fixed_length | SMALLINT | Longitud de las filas de tamaño fijo |
| slot_count | SMALLINT | Número total de ranuras (usadas y sin usar) Para una página de datos, este número es equivalente al número de filas. |
| ghost_rec_count | SMALLINT | Número de registros marcados como fantasma en la página Un registro fantasma es aquel que se ha marcado para su eliminación, pero aún no se ha quitado. |
| free_bytes | SMALLINT | Número de bytes libres en la página |
| free_data_offset | int | Desplazamiento del espacio libre al final del área de datos |
| reserved_bytes | SMALLINT | Número de bytes libres reservados por todas las transacciones (si el montón) Número de filas fantasma (si hoja de índice) |
| reserved_bytes_by_xdes_id | SMALLINT | Espacio contribuido por m_xdesID a m_reservedCnt Solo con fines de depuración |
| xdes_id | nvarchar(64) | Transacción más reciente aportada por m_reserved Solo con fines de depuración |
Observaciones
La sys.dm_db_page_info función de administración dinámica devuelve información de página como , , , etc. que están page_id file_id index_id object_id presentes en un encabezado de página. Esta información es útil para solucionar y depurar diversos problemas de rendimiento (contención de bloqueos y bloqueos) y daños.
sys.dm_db_page_info se puede usar en lugar de la instrucción en muchos casos, pero devuelve solo la información del encabezado de DBCC PAGE página, no el cuerpo de la página. DBCC PAGE seguirá siendo necesario para los casos de uso en los que se requiere todo el contenido de la página.
Usar junto con otras DMV
Uno de los casos de uso importantes de sys.dm_db_page_info es unirse a otras DMV que exponen información de página. Para facilitar este caso de uso, se ha agregado una nueva columna denominada que expone información de página en un formato page_resource hexadecimal de 8 bytes. Esta columna se ha agregado a y y se agregará a otras DMV en el futuro según sys.dm_exec_requests sys.sysprocesses sea necesario.
Una nueva función, , toma como sys.fn_PageResCracker entrada y genera una sola fila que contiene , y page_resource database_id file_id page_id . Esta función se puede usar para facilitar las combinaciones entre sys.dm_exec_requests o sys.sysprocesses y sys.dm_db_page_info .
Permisos
Requiere el VIEW DATABASE STATE permiso en la base de datos.
Ejemplos
A. Mostrar todas las propiedades de una página
La consulta siguiente devuelve una fila con toda la información de página de un determinado database_id , , combinación con el modo predeterminado file_id page_id ('LIMITED')
SELECT *
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT)
B. Uso sys.dm_db_page_info con otras DMV
La consulta siguiente devuelve una fila por wait_resource expuesta por cuando la fila contiene un valor distinto de sys.dm_exec_requests NULL. 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
Consulte también
Funciones y vistas de administración dinámica (Transact-SQL)
Vistas de administración dinámica relacionadas con bases de (Transact-SQL)
sys.dm_exec_requests (Transact-SQL)
sys.fn_PageResCracker