sys.dm_db_page_info (Transact-SQL)

Aplica-se a: SQL Server 2019 (15.x) Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Retorna informações sobre uma página em um banco de dados. A função retorna uma linha que contém as informações de cabeçalho da página, incluindo object_id, index_id e partition_id. Essa função substitui a necessidade de usar DBCC PAGE na maioria dos casos.

Observação

O sys.dm_db_page_info é atualmente compatível apenas com o SQL Server 2019 (15.x) e versões posteriores.

Sintaxe

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

Argumentos

DatabaseId | NULL | DEFAULT

A ID do banco de dados. DatabaseId é smallint. A entrada válida é o número de identificação de um banco de dados. O padrão é NULL, mas o envio de um valor NULL para esse parâmetro resultará em um erro.

FileId | NULL | DEFAULT

A ID do arquivo. FileId é int. A entrada válida é o número de identificação de um arquivo no banco de dados especificado por DatabaseId. O padrão é NULL, mas o envio de um valor NULL para esse parâmetro resultará em um erro.

PageId | NULL | DEFAULT

O ID da página. PageId é int. A entrada válida é o número de identificação de uma página no arquivo especificado por FileId. O padrão é NULL, mas o envio de um valor NULL para esse parâmetro resultará em um erro.

Mode | NULL | DEFAULT

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

Tabela retornada

Nome da coluna Data type Descrição
database_id int ID do banco de dados.

No Banco de Dados SQL do Azure, os valores são exclusivos em um único banco de dados ou em um pool elástico, mas não em um servidor lógico.
file_id int ID do Arquivo
page_id int ID da página
page_header_version int Versão do cabeçalho de página
page_type int Tipo de Página
page_type_desc nvarchar(64) Descrição do tipo de página
page_type_flag_bits nvarchar(64) Bits de sinalizador de tipo no cabeçalho de página
page_type_flag_bits_desc nvarchar(64) Descrição dos bits do sinalizador de tipo no cabeçalho de página
page_flag_bits nvarchar(64) Bits de sinalização no cabeçalho de página
page_flag_bits_desc nvarchar(256) Descrição dos bits do sinalizador no cabeçalho de página
page_lsn nvarchar(64) Número de sequência de log/carimbo de data/hora
page_level 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 bigint ID da partição
alloc_unit_id bigint ID da unidade de alocação
is_encrypted bit Bit para indicar se a página está ou não criptografada
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 que é usado para detectar corrupção de dados
is_iam_pg bit Bit para indicar se a página é ou não uma página de IAM
is_mixed_ext bit Bit para indicar se foi alocado em uma extensão mista
has_ghost_records bit Bit para indicar se a página contém registros fantasmas
Um registro fantasma é aquele que foi marcado para exclusão, mas ainda não foi removido.
has_version_records bit Bit para indicar se a página contém registros de versão usados para recuperação acelerada do banco de dados
pfs_page_id int ID da página PFS correspondente
pfs_is_allocated bit Bit para indicar se a página está ou não marcada como alocada na página PFS correspondente
pfs_alloc_percent int Porcentagem de alocação conforme indicado pelo byte PFS correspondente
pfs_status nvarchar(64) Byte PFS
pfs_status_desc nvarchar(64) Descrição do byte PFS
gam_page_id int ID de página da página GAM correspondente
gam_status bit Bit para indicar se está alocado no GAM
gam_status_desc nvarchar(64) Descrição do bit de status do GAM
sgam_page_id int ID da página do SGAM correspondente
sgam_status bit Bit para indicar se está alocado no SGAM
sgam_status_desc nvarchar(64) Descrição do bit de status do SGAM
diff_map_page_id int ID de página da página de bitmap diferencial correspondente
diff_status bit Bit para indicar se o status diferencial foi alterado
diff_status_desc nvarchar(64) Descrição do bit de status diferencial
ml_map_page_id int ID de página da página de bitmap de log mínimo correspondente
ml_status bit Bit para indicar se a página está minimamente registrada
ml_status_desc nvarchar(64) Descrição do bit de status de log mínimo
prev_page_file_id smallint ID do arquivo da página anterior
prev_page_page_id int Página anterior ID da página
next_page_file_id smallint ID do arquivo da próxima página
next_page_page_id int ID da página seguinte
fixed_length smallint Comprimento das linhas de tamanho fixo
slot_count smallint Número total de slots (usados e não usados)
Em uma página de dados, esse número é equivalente ao número de linhas.
ghost_rec_count smallint Número de registros marcados como fantasma na página
Um registro fantasma é aquele que foi marcado para exclusã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
reserved_bytes smallint Número de bytes livres reservados por todas as transações (se for heap)
Número de linhas fantasmas (se for folha de índice)
reserved_bytes_by_xdes_id smallint Espaço contribuído por m_xdesID para m_reservedCnt
Apenas para fins de depuração
xdes_id nvarchar(64) Última transação contribuída por m_reserved
Apenas para fins de depuração

Comentários

A função de gerenciamento dinâmico sys.dm_db_page_info retorna informações como page_id, file_id, index_id, object_id, e assim por diante, que estão presentes em um cabeçalho de página. Essas informações são úteis para a solução de problemas e a depuração de vários problemas de desempenho (contenção de bloqueio e trava) e corrupção.

sys.dm_db_page_info pode ser usado no lugar da instrução DBCC PAGE em muitos casos, mas retorna apenas as informações do cabeçalho da página, e não o corpo da página. DBCC PAGE ainda será necessário para casos de uso em que todo o conteúdo da página é exigido.

Uso em conjunto com outros DMVs

Um dos casos de uso importantes de sys.dm_db_page_info é uni-lo a outros DMVs que expõem informações de página. Para facilitar esse caso de uso, foi adicionada uma nova coluna chamada page_resource, que expõe as informações da página em um formato hexadecimal de 8 bytes. Essa coluna foi adicionada aos sites sys.dm_exec_requests e sys.sysprocesses e será adicionada a outros DMVs no futuro, conforme necessário.

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

Permissões

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

Permissões do SQL Server 2022 e posteriores

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

Exemplos

A. Exibir todas as propriedades de uma página

A consulta a seguir retorna uma linha com todas as informações de página para uma determinada combinação database_id, file_id, page_id com o modo padrão ('LIMITED')

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

B. Use sys.dm_db_page_info com outros DMVs

A consulta a seguir retorna uma linha por wait_resource exposto por sys.dm_exec_requests quando a linha contém um valor não nulo 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;

Confira também