Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2019 (15.x) e versões
posteriores Azure SQL Database
Azure SQL Managed Instance
SQL 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;