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