DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 2787112 - Última revisão: segunda-feira, 4 de fevereiro de 2013 - Revisão: 3.0

 

Nesta página

Sintomas

Você enfrentar um dos seguintes problemas no Microsoft SQL Server.

Problema 1

Suponha que você crie uma inconsistência nos metadados do sistema quando você atualizar manualmente as tabelas do sistema em um banco de dados do SQL Server. Em seguida, tentar executar um comando DBCC CHECKDB para identificar as inconsistências nas tabelas de metadados do sistema. Nessa situação, a seguinte mensagem de erro é retornada:
Msg 8992, nível 16, estado 1, linha 1
Verificar catálogo Msg 3853, estado 1: Atributo (referenced_object_id =Identificação do objeto>, key_index_id =ID de índice>) da linha (object_id =Identificação do objeto>) em sys.foreign_keys não tem uma linha correspondente (object_id =Identificação do objeto>, index_id =ID de índice>) em sys.indexes.

Problema 2

Quando você atualizar as tabelas do sistema no servidor SQL, você recebe uma mensagem de aviso semelhante à seguinte:
Aviso: ID da tabela de sistemaID da tabela> foi atualizado diretamente na ID de banco de dadosID de banco de dados> e a coerência de cache pode não ter sido mantida. SQL Server deve ser reiniciado.
Nessa situação, se você executar um comando DBCC CHECKDB ou DBCC CHECKCATALOG , a mensagem de aviso com a data e hora em que os catálogos do sistema foram alteradas pela última vez serão retornados. Além disso, a seguinte mensagem de aviso também é registrada no log do SQL Server:
Aviso: O catálogo do sistema foi atualizado diretamente na ID de banco de dadosID de banco de dados>, mais recentemente emHora do log>.
Observação Essa informação é armazenada no cabeçalho do banco de dados e persiste durante a vida útil do banco de dados.

Causa

Esse problema ocorre porque o SQL Server não oferece suporte a atualizações manuais a tabelas do sistema. Tabelas do sistema devem ser atualizadas somente pelo mecanismo de banco de dados do SQL Server.

Observação Você pode exibir os dados nas tabelas do sistema usando os modos de exibição de catálogo do sistema.

Resolução

Para resolver esse problema, use um dos seguintes métodos:

Método 1

Se você tiver um backup limpo do banco de dados, restaure o banco de dados do backup.

Observação Esse método funciona somente se o backup não tem inconsistências nos metadados.

Método 2

Se você não pode restaurar o banco de dados de um backup, exporte os dados e os objetos para um novo banco de dados. Em seguida, transfira o conteúdo do banco de dados atualizado manualmente no novo banco de dados. ObservaçãoVocê não pode corrigir inconsistências nos catálogos de sistema usando as opções de reparo nos comandos DBCC CHECKDB . Portanto, como o comando não é possível corrigir a corrupção de metadados, o comando não fornece qualquer nível de correção recomendada.

Mais Informações

Para obter mais informações sobre a regra do Supervisor de centro de sistema que detecta modificações feitas nos catálogos de sistema, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2688307  (http://support.microsoft.com/kb/2688307/ ) Identificação de evento 17659 e 3859 de ID de evento são registrados quando você atualizar tabelas de sistema em um banco de dados do SQL Server
A tabela a seguir lista os erros que indicam inconsistências nos catálogos de sistema. Geralmente, os seguintes erros são gerados em conjunto com um código de erro "8992".
Recolher esta tabelaExpandir esta tabela
ErroTexto da mensagem
3851Uma linha inválida (% ls) foi encontrada no sistema tabela sys.%ls%ls
3852Linha (% ls) em sys.%ls%ls não tem uma linha correspondente (% ls) em sys.%ls%ls.
3853Atributo (% ls) de linha (% ls) em sys.%ls%ls não tem uma linha correspondente (% ls) em sys.%ls%ls.
3854O atributo (% ls) de linha (% ls) em sys.%ls%ls tem uma linha correspondente (% ls) em sys.%ls%ls é inválido.
3855Existe um atributo (% ls) sem uma linha (% ls) em sys.%ls%ls.
3856Atributo (% ls) existe, mas deve não de linha (% ls) em sys.%ls%ls.
3857O atributo (% ls) é necessário, mas está ausente para a linha (% ls) em sys.%ls%ls.
3858O atributo (% ls) de linha (% ls) em sys.%ls%ls tem um valor inválido.
3859Aviso: O catálogo do sistema foi atualizado diretamente no banco de dados ID % d, mais recentemente em % S_DATE.
A seguir estão exemplos de mensagens de erro pode ser exibida quando você tiver esses problemas:
Servidor: Msg 2513, nível 16, estado 1, linha 1
Erro de tabela: ID de objetoIdentificação do objeto> (objeto 'Identificação do objeto>') não corresponde entre 'SYSCOLUMNS' e 'SYSOBJECTS'.

Msg 3853, nível 16, estado 1, linha 2
Atributo (object_id =Identificação do objeto>) da linha (object_id =Identificação do objeto>, index_id =ID de índice>) em sys.indexes não tem uma linha correspondente (object_id =Identificação do objeto>) em sys. Objects.

Msg 3855, nível 16, estado 1, linha 2
Atributo (data_space_id = 1) existe sem uma linha (object_id =Identificação do objeto>, index_id =ID de índice>) em sys.indexes.

Msg 3852, nível 16, estado 1, linha 1
Linha (object_id =Identificação do objeto>, index_id = 1) em sys.indexes (tipo = U) não tem nenhuma linha correspondente (classe = 0, objid =Identificação do objeto>, indexid =ID de índice>, rowsetnum = 1) em sys.sysrowsetrefs.

Msg 3852, nível 16, estado 1, linha 1
Linha (object_id =Identificação do objeto>, index_id = 1) em sys.indexes (tipo = U) não tem nenhuma linha correspondente (classe = 0, objid =Identificação do objeto>, indexid =ID de índice>, rowsetnum = 1) em sys.sysrowsetrefs.

Msg 3853, nível 16, estado 1, linha 1
Atributo (default_object_id =ID do objeto>) da linha (object_id =Identificação do objeto>, column_id =ID da coluna>) em sys.columns não tem uma linha correspondente (object_id =Identificação do objeto>) em sys. Objects.

Msg 8992, nível 16, estado 1, linha 1
Verificar catálogo Msg 3853, estado 1: Atributo (object_id =Identificação do objeto>) da linha (object_id =Identificação do objeto>, column_id =ID da coluna>) em sys.columns não tem uma linha correspondente (object_id =Identificação do objeto>) em sys. Objects.

Execução do DBCC foi concluída. Se o DBCC imprimiu mensagens de erro, contate o administrador do sistema.
Além disso, você pode receber uma "Msg 211" mensagem de erro semelhante à seguinte, se você verificar a consistência do banco de dados, executando um comando CHECKDB .
Msg 211, nível 23, estado 230, linha 1
Possível corrompimento de esquema. Execute DBCC CHECKCATALOG.

Msg 0, nível 20, estado 0, linha 0
Ocorreu um erro grave no comando atual. Os resultados, se houver, devem ser descartados
Essa mensagem de erro também indica que os catálogos do sistema contêm metadados inconsistentes.

ObservaçãoSe você verificar a consistência do banco de dados que foi atualizado do SQL Server 2000 ao executar um comando CHECKDB , o comando devolva um erro de "8992" código e relatório de inconsistências nos catálogos de sistema. Esse comportamento ocorre porque o comando DBCC CHECKDB no SQL Server 2000 não inclui a funcionalidade do comando DBCC CHECKCATALOG . Portanto, você não pode detectar esses problemas no SQL Server 2000, a menos que você executou o comando DBCC CHECKCATALOG .

Para obter mais informações sobre como usar o comando DBCC CHECKDB , consulte o seguinte site da Microsoft:
Informações gerais sobre o comando DBCC CHECKDB (http://msdn.microsoft.com/en-us/library/ms176064(SQL.90).aspx)

Referências

Para obter mais informações sobre problemas que podem ocorrer quando uma tabela de sistema do SQL Server é atualizada manualmente, clique no número de artigo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2688307  (http://support.microsoft.com/kb/2688307/ ) Identificação de evento 17659 e 3859 de ID de evento são registrados quando você atualizar tabelas de sistema em um banco de dados do SQL Server



A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Standard
Palavras-chave: 
kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB2787112 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 2787112  (http://support.microsoft.com/kb/2787112/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store