Partilhar via


Gerenciar a tabela suspect_pages (SQL Server)

Este tópico descreve como gerenciar a tabela suspect_pages no SQL Server 2012 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 a restauração é necessária. A tabela suspect_pages reside no banco de dados msdb e foi introduzida no SQL Server 2005.

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 causado por uma CRC (verificação de redundância cíclica) emitido por um sistema operacional como, por exemplo, um erro de disco (certos erros de hardware)

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

A ID de cada página suspeita é registrada na tabela suspect_pages. O Mecanismo de Banco de Dados registra qualquer página suspeita encontrada durante o processamento regular, como o seguinte:

  • Uma consulta precisa 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 cancelamento de banco de dados.

Neste tópico

  • Antes de começar:

    Recomendações

    Segurança

  • Para gerenciar a tabela suspect_pages usando:

    SQL Server Management Studio

    Transact-SQL

Antes de começar

Recomendações

  • Erros registrados na tabela suspect_pages

    A tabela suspect_pages contém uma linha por página que falhou com um erro 824 até o limite de 1.000 linhas. A tabela a seguir mostra erros registrados na coluna event_type da tabela suspect_pages.

    Descrição do erro

    Valor event_type

    Erro 823 causado por um erro CRC de sistema operacional ou erro 824 diferente de uma soma de verificação inválida ou uma página danificada (por exemplo, uma ID de página inválida).

    1

    Soma de verificação inválida

    2

    Página danificada

    3

    Restaurada (a página foi restaurada depois de marcada como inválida)

    4

    Reparada (o DBCC reparou a página)

    5

    Desalocada pelo DBCC

    7

    A tabela suspect_pages também registra erros temporários. Fontes de erros temporários incluem um erro de E/S (por exemplo, um cabo desconectado) ou uma página que temporariamente falha 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 efetua as seguintes ações na tabela suspect_pages:

    • Se a tabela não estiver completa, a cada erro 824 ela será atualizada para indicar a ocorrência de um erro, e o contador de erros será incrementado. Se uma página tiver um erro consertado pela restauração, restaurado ou desalocado, sua contagem de number_of_errors será incrementada e sua coluna last_update será atualizada

    • Depois que uma página listada é consertada por uma operação de restauração ou reparo, a operação atualizará 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á as páginas sem-erros como reparadas (event_type = 5) ou desalocadas (event_type = 7).

  • Atualizações automáticas na tabela suspect_pages

    Um parceiro de espelhamento de banco de dados ou réplica de disponibilidade AlwaysOn atualiza a tabela suspect_pages quando a tentativa de ler uma página de um arquivo de dados falha por uma das razões a seguir.

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

    • Um erro 824 (dano lógico como uma página corrompida).

    As ações a seguir 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 deve ser desalocada ou reparada.

    • Uma RESTORE completa, de página ou de arquivo marca as entradas de página como restauradas.

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

    • ALTER DATABASE REMOVE FILE

    • DROP DATABASE

  • 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, quando está cheia, os erros novos não são registrados. Para impedir que a tabela fique cheia, o administrador do banco de dados ou do sistema deve limpar manualmente as entradas antigas dessa tabela excluindo as linhas. Portanto, recomendamos que você exclua periodicamente ou arquive linhas com event_type restauradas ou reparadas, ou linhas com valor last_update antigo.

    Para monitorar a atividade na tabela suspect_pages, você pode usar o Classe de evento Database Suspect Data Page. Às vezes são adicionadas linhas à tabela suspect_pages por causa de erros temporários. Contudo, se muitas linhas estiverem sendo adicionadas à tabela, talvez haja um problema com o subsistema de E/S. Se você perceber um aumento repentino no número de linhas que estão sendo adicionadas à tabela, recomendamos que investigue os possíveis problemas em seu subsistema de E/S.

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

Segurança

Permissões

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

Ícone de seta usado com o link Voltar ao Início[Início]

Usando o SQL Server Management Studio

Para gerenciar a tabela 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 expanda Bancos de Dados.

  2. Expanda Bancos de Dados do Sistema, expanda msdb, expanda Tabelase então expanda Tabelas do Sistema.

  3. Expanda dbo.suspect_pages e clique com o botão direito do mouse em Editar 200 Linhas Superiores.

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

Ícone de seta usado com o link Voltar ao Início[Início]

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

Ícone de seta usado com o link Voltar ao Início[Início]

Consulte também

Referência

DROP DATABASE (Transact-SQL)

RESTORE (Transact-SQL)

BACKUP (Transact-SQL)

DBCC (Transact-SQL)

suspect_pages (Transact-SQL)

Conceitos

Restaurar páginas (SQL Server)

MSSQLSERVER_823

MSSQLSERVER_824