Compartilhar via


MSSQLSERVER_8992

Aplica-se:SQL Server

Detalhes

Elemento Alíquota
Nome do produto SQL Server
ID do evento 8992
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico DBCC3_CHECK_CATALOG
Texto da mensagem Verifique a mensagem do catálogo ERROR nível LEVEL Estado STATE: MESSAGE.

Observação

A mensagem de erro 8992 referencia outra mensagem específica (que varia de 3851 a 3858) sobre a inconsistência real.

Explicação

DBCC CHECKCATALOG ou DBCC CHECKDB encontrou uma inconsistência nas tabelas de metadados do sistema para o objeto especificado. Ou seja, há uma inconsistência entre a ID do objeto gravado e o objeto especificado na mensagem de erro.

Esse erro pode ocorrer quando uma ou mais tabelas do sistema foram atualizadas manualmente de uma forma que cria uma inconsistência nos metadados do sistema. Por exemplo, você pode excluir manualmente um objeto da sysobjects tabela sem remover linhas associadas em outras tabelas, como sysindexes e syscolumns.

Esse erro pode ocorrer ao executar DBCC CHECKDB em um banco de dados que foi atualizado do SQL Server 2000 (8.x) para uma versão posterior do SQL Server. No SQL Server 2000 (8.x), DBCC CHECKDB não incluía DBCC CHECKCATALOG a funcionalidade, portanto, o erro não é capturado antes da atualização, a menos que DBCC CHECKCATALOG seja executado especificamente no banco de dados no SQL Server 2000 (8.x).

Você pode ver qualquer um dos seguintes erros junto com o erro 8992:

ID da mensagem Texto da mensagem
3851 An invalid row (%ls) was found in the system table sys.%ls%ls.
3852 Row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls.
3853 Attribute (%ls) of row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls.
3854 Attribute (%ls) of row (%ls) in sys.%ls%ls has a matching row (%ls) in sys.%ls%ls that is invalid.
3855 Attribute (%ls) exists without a row (%ls) in sys.%ls%ls.
3856 Attribute (%ls) exists but should not for row (%ls) in sys.%ls%ls.
3857 The attribute (%ls) is required but is missing for row (%ls) in sys.%ls%ls.
3858 The attribute (%ls) of row (%ls) in sys.%ls%ls has an invalid value.

Ação do usuário

Remover e recriar o objeto especificado

Se possível, descarte e recrie o objeto especificado. Por exemplo, se o objeto for um procedimento armazenado ou um tipo definido pelo usuário, recriar o objeto poderá resolver o problema.

Restaurar usando backup

Se o problema não estiver relacionado ao hardware e um backup limpo conhecido estiver disponível, restaure o banco de dados do backup. Essa ação só será aplicável se o backup não contiver o erro de metadados.

Exportar os dados para um novo banco de dados

Se o backup também contiver a inconsistência de metadados, você precisará criar um novo banco de dados e exportar o conteúdo do banco de dados existente para o novo banco de dados.

DBCC CHECKDB não pode reparar esse erro

Esse erro não pode ser reparado. Se você não puder restaurar o banco de dados de um backup, entre em contato com o Suporte da Microsoft.

Não atualize manualmente as tabelas do sistema

Não faça atualizações manuais nas tabelas do sistema. O SQL Server não dá suporte a alterações manuais nos bancos de dados do sistema. Se você atualizar uma tabela do sistema em um banco de dados do SQL Server, os seguintes eventos serão registrados em log:

Quando uma tabela do sistema é atualizada manualmente

Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.

Iniciar um banco de dados com uma tabela do sistema que foi atualizada manualmente

Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.

Execute o comando DBCC CHECKDB depois que uma tabela do sistema for atualizada manualmente

Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.