sys.dm_db_page_info (Transact-SQL)

Se aplica a: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed Instance

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 en la página, incluidos object_id, index_id 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 | VALOR PREDETERMINADO

El Id. de la base de datos. DatabaseId es smallint. La entrada válida es el número de identificación 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 | VALOR PREDETERMINADO

Identificador del archivo. FileId es int. La entrada válida es el número de identificador de un archivo de la base de datos especificado por DatabaseId. El valor predeterminado es NULL, pero el envío de un valor NULL para este parámetro producirá un error.

PageId | NULL | VALOR PREDETERMINADO

Id. de la página. PageId es int. La entrada válida es el número de identificador de una página en el archivo especificado por FileId. El valor predeterminado es NULL, pero el envío de un valor NULL para este parámetro producirá un error.

Mode | NULL | VALOR 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 Id. de la base de datos.

En Azure SQL Database, los valores son únicos dentro de una base de datos única o un grupo elástico, pero no dentro de un servidor lógico.
file_id int Id. de archivo
page_id int Id. 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 plan.
page_type_flag_bits nvarchar (64) Escribir bits de marca en el encabezado de página.
page_type_flag_bits_desc nvarchar (64) Escribir la descripción de bits de marca en el encabezado de página.
page_flag_bits nvarchar (64) Bits de marca en el encabezado de página.
page_flag_bits_desc nvarchar(256) Descripción de 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 Id. del objeto propietario de la página.
id_de_índice int Id. del índice (0 para páginas de datos del montón).
partition_id bigint Id. de la partición.
alloc_unit_id bigint Id. de la unidad de asignación.
is_encrypted bit Bit para indicar si la página está cifrada.
has_checksum bit Bit para indicar si la página tiene 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 datos dañados.
is_iam_pg bit Bit para indicar si la página es una página de 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 que aún no se ha quitado.
has_version_records bit Bit para indicar si la página contiene registros de versión usados para la recuperación acelerada de la base de datos.
pfs_page_id int Id. de página de la página PFS correspondiente.
pfs_is_allocated bit Bit para indicar si la página está marcada 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 Id. de página de la página GAM correspondiente.
gam_status bit Bit para indicar si se asigna en GAM.
gam_status_desc nvarchar (64) Descripción del bit de estado de GAM.
sgam_page_id int Id. de página de la página SGAM correspondiente.
sgam_status bit Bit para indicar si se asigna en SGAM.
sgam_status_desc nvarchar (64) Descripción del bit de estado de SGAM.
diff_map_page_id int Id. 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 Id. 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 Id. de archivo de página anterior.
prev_page_page_id int Id. de página anterior.
next_page_file_id smallint Id. de archivo de página siguiente.
next_page_page_id int Id. de página siguiente.
fixed_length smallint Longitud de 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 que 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 hay montón).
Número de filas fantasma (si hay 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.

Comentarios

La función de administración dinámica sys.dm_db_page_info devuelve información como page_id, file_id, index_id, object_id, etc., que están presentes en un encabezado de página. Esta información es útil para solucionar y depurar varios problemas de rendimiento (contención de bloqueos y bloqueos temporales) y daños.

sys.dm_db_page_info se puede usar en lugar de la instrucción DBCC PAGE en muchos casos, pero solo devuelve la información del encabezado de página, no el cuerpo de la página. DBCC PAGE seguirá siendo necesario para los casos de uso en los que se requiera todo el contenido de la página.

Uso junto con otras DMV

Uno de los casos de uso importantes de sys.dm_db_page_info es unirlo con otras DMV que exponen información de página. Para facilitar este caso de uso, se ha agregado una nueva columna denominada page_resource que expone información de página en un formato hexadecimal de 8 bytes. Esta columna se ha agregado a sys.dm_exec_requests y sys.sysprocesses se agregará a otras DMV en el futuro según sea necesario.

Una nueva función, sys.fn_PageResCracker, toma page_resource como entrada y genera una sola fila que contiene database_id, file_id y page_id. A continuación, 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

Se necesita el permiso VIEW DATABASE STATE en la base de datos.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VIEW DATABASE PERFORMANCE STATE en la base de datos.

Ejemplos

A Visualización de todas las propiedades de una página

La consulta siguiente devuelve una fila con toda la información de página de una combinación de database_id, file_id y page_id determinada con el modo predeterminado ("LIMITED").

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

B. Uso de sys.dm_db_page_info con otras DMV

La consulta siguiente devuelve una fila por wait_resource expuesta por sys.dm_exec_requests cuando la fila contiene un valor page_resource distinto de NULL.

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