Partilhar via


sys.dm_db_page_info (Transact-SQL)

Aplica-se a: SQL Server 2019 (15.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Devolve informações sobre uma página numa base de dados. A função retorna uma linha que contém as informações de cabeçalho da página, incluindo , object_idindex_ide partition_id. Esta função substitui a necessidade de uso DBCC PAGE na maioria dos casos.

Observação

sys.dm_db_page_info atualmente é suportado apenas no SQL Server 2019 (15.x) e versões posteriores.

Sintaxe

sys.dm_db_page_info ( DatabaseId , FileId , PageId , Mode )

Arguments

DatabaseId | NULL | DEFEITO

O ID da base de dados. DatabaseId é smallint. A entrada válida é o número ID de uma base de dados. O padrão é NULL, no entanto, enviar um valor NULL para este parâmetro resultará num erro.

FileId | NULL | PADRÃO

A ID do arquivo. FileId é int. A entrada válida é o número ID de um ficheiro na base de dados especificado pelo DatabaseId. O padrão é NULL, no entanto, enviar um valor NULL para este parâmetro resultará num erro.

PageId | NULL | PADRÃO

O ID da página. PageID é int. A entrada válida é o número ID de uma página no ficheiro especificado pelo FileId. O padrão é NULL, no entanto, enviar um valor NULL para este parâmetro resultará num erro.

Modo | NULL | PADRÃO

Determina o nível de detalhe na saída da função. 'LIMITED' devolverá valores NULL para todas as colunas de descrição, o 'DETAILED' irá preencher as colunas de descrição. DEFAULT é 'LIMITED'.

Tabela retornada

Nome da coluna Tipo de dados Description
database_id int ID da base de dados.

No Banco de Dados SQL do Azure, os valores são exclusivos em um único banco de dados ou pool elástico, mas não em um servidor lógico.
identificação_de_ficheiro int ID do ficheiro
page_id int ID da página
versão_do_cabeçalho_da_página int Versão do cabeçalho da página
page_type int Tipo de Página
page_type_desc Nvarchar(64) Descrição do tipo de página
página_tipo_sinalizador_bits Nvarchar(64) Bits de Tipo de Flag no cabeçalho da página
descrição_bits_de_bandeira_de_tipo_de_página Nvarchar(64) Descrição dos bits de sinalizador tipo no cabeçalho da página
bits_de_bandeira_de_página Nvarchar(64) Bits de flag no cabeçalho da página
descrição_de_bits_de_bandeira_da_página Nvarchar(256) Descrição dos bits de sinalizador no cabeçalho da página
page_lsn Nvarchar(64) Número de sequência de logarítems / carimbo temporal
nível_de_página int Nível da página no índice (folha = 0)
object_id int ID do objeto proprietário da página
index_id int ID do índice (0 para páginas de dados de heap)
partition_id (identificador de partição) bigint ID da partição
alloc_unit_id bigint ID da unidade de alocação
está_encriptado bit bit para indicar se a página está encriptada ou não
has_checksum bit Bit para indicar se a página tem ou não um valor de soma de verificação
soma de verificação int Armazena o valor da soma de verificação usado para detetar corrupção de dados
is_iam_pg bit Bit para indicar se a página é ou não uma página IAM
is_mixed_ext bit Bit para indicar se está alocado numa extensão mista
has_ghost_records bit Bit para indicar se a página contém registos fantasmas
Um registo fantasma é aquele que foi marcado para eliminação, mas ainda não foi removido.
tem_registos_de_versão bit bit para indicar se a página contém registos de versão usados para recuperação acelerada da base de dados
pfs_page_id int ID da página correspondente do PFS
pfs_is_allocated bit bit para indicar se a página está ou não marcada como alocada na página correspondente do PFS
pfs_alloc_percent int Percentual de alocação conforme indicado pelo byte correspondente do PFS
pfs_status Nvarchar(64) PFS byte
pfs_status_desc Nvarchar(64) Descrição do byte PFS
gam_page_id int ID de página do GAM correspondente
gam_status bit Bit para indicar se está alocado no GAM
gam_status_desc Nvarchar(64) Descrição do bit de estado GAM
sgam_page_id int ID da página correspondente do SGAM
sgam_status bit Bit que indica se está alocado em SGAM
sgam_status_desc Nvarchar(64) Descrição do bit de estado SGAM
diff_map_page_id int ID de página da correspondente página de bitmap diferencial
diff_status bit Bit para indicar se o estado do diff foi alterado
diff_status_desc Nvarchar(64) Descrição do bit de estado diferencial
ml_map_page_id int ID de página da correspondente página de bitmap de registo mínimo
ml_status bit bit para indicar se a página está minimamente logada
descrição_do_estado_ml Nvarchar(64) Descrição do bit mínimo de estado de registo
prev_page_file_id smallint Identificação de ficheiro da página anterior
prev_page_page_id int ID da página anterior
identificador_ficheiro_página_seguinte smallint ID do ficheiro da página seguinte
next_page_page_id int ID da página seguinte
comprimento_fixo smallint Comprimento das linhas de tamanho fixo
contagem_de_slots smallint Número total de espaços (usados e não utilizados)
Para uma página de dados, este número é equivalente ao número de linhas.
ghost_rec_count smallint Número de registos marcados como fantasma na página
Um registo fantasma é aquele que foi marcado para eliminação, mas ainda não foi removido.
free_bytes smallint Número de bytes livres na página
free_data_offset int Deslocamento do espaço livre no final da área de dados
bytes reservados smallint Número de bytes livres reservados por todas as transações (se heap)
Número de linhas fantasmas (se for folha de índice)
reserved_bytes_by_xdes_id smallint Espaço contribuído por m_xdesID à m_reservedCnt
Apenas para efeitos de depuração
xdes_id Nvarchar(64) Última transação contribuída pela m_reserved
Apenas para efeitos de depuração

Observações

A sys.dm_db_page_info função de gestão dinâmica devolve informações como page_id, file_id, index_id, object_id, e assim sucessivamente, que estão presentes num cabeçalho de página. Esta informação é útil para a solução de problemas e depuração de vários problemas de desempenho (contenda de bloqueio e trava) e corrupção.

sys.dm_db_page_info pode ser usado em muitos casos em vez da DBCC PAGE instrução, mas devolve apenas a informação do cabeçalho da página, não o corpo da página. DBCC PAGE continuará a ser necessário para casos de uso em que o conteúdo completo da página seja necessário.

Utilização em conjunto com outros DMVs

Um dos importantes casos de uso de sys.dm_db_page_info é associá-lo com outros DMVs que expõem informações de página. Para facilitar este caso de uso, foi adicionada uma nova coluna chamada page_resource que expõe a informação da página num formato hexadecimal de 8 bytes. Esta coluna foi adicionada a sys.dm_exec_requests e sys.sysprocesses e será adicionada a outros IMTs no futuro, conforme necessário.

Uma nova função, sys.fn_PageResCracker, recebe o page_resource como entrada e produz uma única linha que contém database_id, file_id e page_id. Esta função pode então ser usada para facilitar junções entre sys.dm_exec_requests ou sys.sysprocesses e sys.dm_db_page_info.

Permissions

Requer permissão VIEW DATABASE STATE na base de dados.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW DATABASE PERFORMANCE STATE no banco de dados.

Examples

A. Mostrar todas as propriedades de uma página

A consulta seguinte devolve uma linha com toda a informação da página para uma combinação dada database_id, file_id, page_id com o modo predefinido ('LIMITED')

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

B. Utilize sys.dm_db_page_info com outras DMVs

A consulta seguinte devolve uma linha por cada wait_resource exposto por sys.dm_exec_requests quando a linha contém um page_resource não nulo

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 também