sys.dm_db_page_info (Transact-SQL)
Aplica-se a: SQL Server 2019 (15.x) Banco de Dados SQL do Azure Instâ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 | Tipo de dados | 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
R. 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;