Partilhar via


Gerenciar a tabela suspect_pages (SQL Server)

Aplica-se a:SQL Server

Este tópico descreve como gerenciar a tabela suspect_pages no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. A tabela suspect_pages é usada para manter informações sobre páginas suspeitas e é relevante para ajudar a decidir se uma restauração é necessária. A tabela suspect_pages reside no banco de dados msdb .

Uma página é considerada "suspeita" quando o Mecanismo de Banco de Dados do SQL Server encontra um dos seguintes erros ao tentar ler uma página de dados:

  • Um erro 823 que foi causado por uma verificação de redundância cíclica (CRC) emitida pelo sistema operacional, como um erro de disco (determinados erros de hardware)

  • Um erro 824, como uma página rasgada (qualquer erro lógico)

O ID de cada página suspeita é registado na tabela suspect_pages. O Mecanismo de Banco de Dados registra todas as páginas suspeitas encontradas durante o processamento regular, como as seguintes:

  • Uma consulta tem de ler uma página.

  • Durante uma operação DBCC CHECKDB.

  • Durante uma operação de backup.

A tabela suspect_pages também é atualizada conforme necessário durante uma operação de restauração, uma operação de reparo DBCC ou uma operação de eliminação de base de dados.

Neste tópico

Antes de começar

Recomendações

  • Erros registados na tabela suspect_pages

    A tabela suspect_pages contém uma linha para cada página que falhou com um erro 824, até um limite de 1.000 linhas. A tabela a seguir mostra os erros registados na coluna event_type da tabela suspect_pages.

    Descrição do erro event_type valor
    Erro 823 causado por um erro CRC do sistema operacional ou erro 824 diferente de uma soma de verificação incorreta ou uma página rasgada (por exemplo, um ID de página incorreto) 1
    Soma de verificação inválida 2
    Página rasgada 3
    Restaurado (A página foi restaurada depois de ter sido marcada como ruim) 4
    Reparado (DBCC reparou a página) 5
    Desalocado pelo DBCC 7

    A tabela suspect_pages também registra erros transitórios. As fontes de erros transitórios incluem um erro de E/S (por exemplo, um cabo foi desconectado) ou uma página que falha temporariamente em um teste de soma de verificação repetido.

  • Como o Mecanismo de Banco de Dados atualiza a tabela suspect_pages

    O Mecanismo de Banco de Dados executa as seguintes ações na tabela suspect_pages:

    • Se a tabela não estiver cheia, ela será atualizada para cada erro 824, para indicar que ocorreu um erro e o contador de erros será incrementado. Se uma página tiver um erro após ser corrigida, restaurada ou desalocada, a contagem de number_of_errors será incrementada e a coluna last_update será atualizada.

    • Depois que uma página listada é corrigida por uma operação de restauração ou reparo, a operação atualiza a linha suspect_pages para indicar que a página foi reparada (event_type = 5) ou restaurada (event_type = 4).

    • Se uma verificação DBCC for executada, a verificação marcará todas as páginas livres de erros como reparadas (event_type = 5) ou desalocadas (event_type = 7).

  • Atualizações automáticas da tabela suspect_pages

    Um parceiro de espelhamento de banco de dados ou uma réplica de disponibilidade Always On atualiza a tabela suspect_pages depois que uma tentativa de ler uma página de um arquivo de dados falha por um dos seguintes motivos.

    • Um erro 823 causado por um erro CRC do sistema operacional.

    • Um erro 824 (corrupção lógica, como uma página rasgada).

    As seguintes ações também atualizam automaticamente as linhas na tabela suspect_pages.

    • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS atualiza a tabela suspect_pages para indicar cada página que foi desalocada ou reparada.

    • Um RESTORE completo, de arquivo, ou de página marca as entradas de página como restauradas.

    As ações a seguir eliminam automaticamente as linhas da tabela suspect_pages.

    • ALTERAR BASE DE DADOS REMOVER FICHEIRO

    • ELIMINAR BASE DE DADOS

  • função de manutenção do administrador de banco de dados

    Os administradores de banco de dados são responsáveis por gerenciar a tabela, principalmente excluindo linhas antigas. A tabela suspect_pages é limitada em tamanho e, se for preenchida, novos erros não serão registados. Para evitar que essa tabela seja preenchida, o administrador do banco de dados ou o administrador do sistema deve limpar manualmente as entradas antigas dessa tabela excluindo linhas. Portanto, recomendamos que você exclua ou arquive periodicamente linhas que tenham um event_type de restaurado ou reparado, ou linhas que tenham um valor de last_update antigo.

    Para monitorizar a atividade na tabela suspect_pages, pode usar o Database Suspect Data Page Event Class. Às vezes, linhas são adicionadas à tabela suspect_pages devido a erros transitórios. No entanto, se muitas linhas estiverem sendo adicionadas à tabela, provavelmente existirá um problema com o subsistema de E/S. Se você notar um aumento repentino no número de linhas sendo adicionadas à tabela, recomendamos que investigue possíveis problemas em seu subsistema de E/S.

    Um administrador de banco de dados também pode inserir ou atualizar registros. Por exemplo, atualizar uma linha pode ser útil quando o administrador do banco de dados sabe que uma determinada página suspeita está realmente intacta, mas deseja preservar o registro por um tempo.

Segurança

Permissões

Qualquer pessoa com acesso à base de dados msdb pode ler os dados na tabela suspect_pages. Qualquer pessoa com permissão UPDATE na tabela suspect_pages pode atualizar os seus registos. Os membros da função de banco de dados fixa db_owner em msdb ou da função de servidor fixa sysadmin podem inserir, atualizar e excluir registros.

Usando o SQL Server Management Studio

Para gerir a tabela de suspect_pages

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server, expanda essa instância, e depois expanda Bancos de Dados.

  2. Expanda Bases de Dados do Sistema, expanda msdb, expanda Tabelase, em seguida, expanda Tabelas do Sistema.

  3. Expanda dbo.suspect_pages e clique com o botão direito do rato Editar as 200 primeiras linhas.

  4. Na janela de consulta, edite, atualize ou exclua as linhas desejadas.

Usando Transact-SQL

Para gerenciar a tabela suspect_pages

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra padrão, clique em Nova consulta.

  3. Copie e cole os exemplos a seguir na janela de consulta e clique em Executar. Este exemplo exclui algumas das linhas da tabela suspect_pages.

-- Delete restored, repaired, or deallocated pages.  
DELETE FROM msdb..suspect_pages  
   WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);  
GO  
  

Este exemplo retorna as páginas incorretas na tabela suspect_pages.

-- Select nonspecific 824, bad checksum, and torn page errors.  
SELECT * FROM msdb..suspect_pages  
   WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);  
GO  
  

Ver também

DROP DATABASE (Transact-SQL)
RESTAURAR (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
Restaurar páginas (SQL Server)
suspect_pages (Transact-SQL)