Mensagem de erro ao executar o comando DBCC CHECKDB em um computador que contém um banco de dados SQL Server

Este artigo permite que você resolva o problema que ocorre quando você executa o DBCC CHECKDB comando em um computador que contém um banco de dados SQL Server.

Versão original do produto: SQL Server 2008
Número de KB original: 960791

Sintomas

Considere o seguinte cenário:

  • Você restaura um banco de dados do Microsoft SQL Server 2008 ou SQL Server 2005 de um backup.

  • Você recebe erros durante o processo de restauração que impedem a restauração do banco de dados.

  • Você restaura o banco de dados com êxito do mesmo backup usando a opção CONTINUE_AFTER_ERROR.

Nesse cenário, ao executar o comando DBCC CHECKDB no computador que contém o banco de dados SQL Server, você receberá uma mensagem de erro que se assemelha ao seguinte:

Msg 8967, Nível 16, Estado 216, Nome> do <servidor, Linha 2
Ocorreu um erro interno no DBCC que impediu o processamento adicional. Entre em contato com o Suporte ao Cliente.
Resultados do DBCC para '<nome> do banco de dados'.

Msg 8921, Nível 16, Estado 1, Nome> do <servidor, Linha 1

Verificar encerrado. Uma falha foi detectada durante a coleta de fatos. Possivelmente o tempdb fora do espaço ou uma tabela do sistema é inconsistente. Verifique os erros anteriores.

Além disso, uma mensagem que se assemelha ao seguinte pode ser exibida no log de erros do SQL Server:

2007-05-26 07:13:49.21 spid58 DBCC encontrou uma página com um LSN maior que o final atual do LSN (<log LSN>) para seu banco de dados interno instantâneo. Não foi possível ler página (id de arquivo:id de página), banco de dados '<nome do banco de dados' (id> de banco de dados ID do banco de dados), LSN = (<LSN>), tipo = 32, isInSparseFile = 1. Execute novamente este comando DBCC.

Motivo

Esse problema ocorrerá se o DBCC CHECKDB comando não puder executar as verificações necessárias para confirmar a consistência do banco de dados. Essas verificações não puderam ser executadas por muitos motivos. Por exemplo, esse comportamento pode ocorrer se houver inconsistências fundamentais no banco de dados, como inconsistências de metadados ou corrupção instantâneo banco de dados. Mais informações sobre a causa específica desse erro podem ser determinadas examinando o estado diferente exibido na mensagem de erro. No cenário descrito na seção Sintomas, a mensagem state 216 indica que o DBCC CHECKDB comando leu uma página do instantâneo interno que tem um número de sequência de log maior (LSN) do que o final do LSN de log. Esse comportamento poderá ocorrer se você restaurar bancos de dados usando a opção CONTINUE_AFTER_ERROR .

Solução alternativa

Para contornar esse problema, use a dica TABLOCK com o DBCC CHECKDB comando. Isso permite que o DBCC CHECKDB comando termine sem gerar a mensagem de erro.

Para obter mais informações sobre dicas TABLOCK, visite o seguinte site da Microsoft: Dicas (Transact-SQL) – Tabela.