"Messaggio di errore 8992" msg e metadati inconsistenti nei cataloghi di sistema di SQL Server

Traduzione articoli Traduzione articoli
Identificativo articolo: 2787112 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Si verifica uno dei seguenti problemi in Microsoft SQL Server.

Problema 1

Si supponga di crea un'incoerenza nei metadati di sistema quando si aggiornano manualmente le tabelle di sistema in un database di SQL Server. Quindi, si tenta di eseguire un comando DBCC CHECKDB per identificare eventuali incoerenze nelle tabelle di metadati di sistema. In questo caso, viene restituito il seguente messaggio di errore:
Msg 8992, livello 16, stato 1, riga 1
Controllare il catalogo Msg 3853, stato 1: Attributo (referenced_object_id =ID oggetto>, key_index_id =ID dell'indice>) della riga (object_id =ID oggetto>) in sys.foreign_keys non dispone di una riga corrispondente (object_id =ID oggetto>, index_id =ID dell'indice>) in sys. Indexes.

Problema 2

Quando si aggiornano le tabelle di sistema nel server SQL, viene visualizzato un messaggio di avviso analogo al seguente:
Avviso: ID tabella sistemaID tabella> è stato aggiornato direttamente nel database con IDID del database> e la coerenza della cache non sia stata mantenuta. SQL Server deve essere riavviato.
In questo caso, se si esegue un comando DBCC CHECKDB o DBCC CHECKCATALOG vengono restituiti il messaggio di avviso con la data e ora ultima modifica dei cataloghi di sistema. Inoltre, il seguente messaggio di avviso viene registrato anche nel Registro di SQL Server:
Avviso: Il catalogo di sistema è stato aggiornato direttamente nel database con IDID del database>, più di recente inOra registro>.
Nota. Queste informazioni memorizzate nell'intestazione del database e persiste per tutta la durata del database.

Cause

Questo problema si verifica perché SQL Server non supporta gli aggiornamenti manuali alle tabelle di sistema. Tabelle di sistema devono essere aggiornate solo dal motore di database di SQL Server.

Nota. È possibile visualizzare i dati nelle tabelle di sistema utilizzando le viste del catalogo di sistema.

Risoluzione

Per risolvere questo problema, utilizzare uno dei metodi descritti di seguito.

Metodo 1

Se si dispone di una copia di backup del database, è possibile ripristinare il database dal backup.

Nota. Questo metodo funziona solo se il backup non dispone delle incoerenze nei metadati.

Metodo 2

Se non è possibile ripristinare il database da un backup, è possibile esportare i dati e gli oggetti in un nuovo database. Quindi, trasferire il contenuto del database aggiornato manualmente nel nuovo database. Nota. Non è possibile riparare le incoerenze nei cataloghi di sistema utilizzando le opzioni di ripristino nei comandi DBCC CHECKDB . Pertanto, poiché il comando non può essere ripristinato il danneggiamento dei metadati, il comando non fornisce alcun livello di correzione consigliata.

Informazioni

Per ulteriori informazioni sulla regola di System Center Advisor che rileva le modifiche apportate ai cataloghi di sistema, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
2688307 ID evento 17659 e 3859 ID evento vengono registrati quando si aggiornano le tabelle di sistema in un database di SQL Server
Nella tabella seguente sono elencati gli errori che indicano le incoerenze nei cataloghi di sistema. In genere, vengono generati i seguenti errori con un codice di errore "8992".
Riduci questa tabellaEspandi questa tabella
ErroreTesto del messaggio
3851Una riga non valida (% ls) è stata trovata nel sys.%ls%ls tabella sistema
3852Sys.%ls%ls riga (% ls) non dispone di una riga corrispondente (% ls) in sys.%ls%ls.
3853L'attributo (% ls) della riga (% ls) in sys.%ls%ls non è una riga corrispondente (% ls) in sys.%ls%ls.
3854L'attributo (% ls) della riga (% ls) in sys.%ls%ls è una riga corrispondente (% ls) in sys.%ls%ls non è valido.
3855L'attributo (% ls) esiste senza una riga (% ls) in sys.%ls%ls.
3856L'attributo (% ls) esiste ma deve non per riga (% ls) in sys.%ls%ls.
3857L'attributo (% ls) è obbligatorio ma manca per riga (% ls) in sys.%ls%ls.
3858L'attributo (% ls) della riga (% ls) in sys.%ls%ls ha un valore non valido.
3859Avviso: Il catalogo di sistema è stato aggiornato direttamente nel database con ID % d, più di recente in % S_DATE.
Di seguito è riportati esempi di messaggi di errore potrebbe essere visualizzato quando si verificano questi problemi:
Server: Msg 2513, livello 16, stato 1, riga 1
Errore di tabella: ID di oggettoID oggetto> (oggetto 'ID oggetto>') non corrisponde fra 'SYSCOLUMNS' e 'SYSOBJECTS'.

Msg 3853, livello 16, stato 1, riga 2
Attributo (object_id =ID oggetto>) della riga (object_id =ID oggetto>, index_id =ID dell'indice>) in sys. Indexes non dispone di una riga corrispondente (object_id =ID oggetto>) in sys. Objects.

Msg 3855, livello 16, stato 1, riga 2
Attributo (data_space_id = 1) non è una riga (object_id =ID oggetto>, index_id =ID dell'indice>) in sys. Indexes.

Msg 3852, livello 16, stato 1, riga 1
Riga (object_id =ID oggetto>, index_id = 1) in sys. Indexes (tipo = U) non dispone di una riga corrispondente (classe = 0, objid =ID oggetto>, indexid =ID dell'indice>, rowsetnum = 1) in sys.sysrowsetrefs.

Msg 3852, livello 16, stato 1, riga 1
Riga (object_id =ID oggetto>, index_id = 1) in sys. Indexes (tipo = U) non dispone di una riga corrispondente (classe = 0, objid =ID oggetto>, indexid =ID dell'indice>, rowsetnum = 1) in sys.sysrowsetrefs.

Msg 3853, livello 16, stato 1, riga 1
Attributo (default_object_id =ID oggetto>) della riga (object_id =ID oggetto>, column_id =ID di colonna>) in sys.columns non dispone di una riga corrispondente (object_id =ID oggetto>) in sys. Objects.

Msg 8992, livello 16, stato 1, riga 1
Controllare il catalogo Msg 3853, stato 1: Attributo (object_id =ID oggetto>) della riga (object_id =ID oggetto>, column_id =ID di colonna>) in sys.columns non dispone di una riga corrispondente (object_id =ID oggetto>) in sys. Objects.

Esecuzione di DBCC completata. Se sono stati creati messaggi di errore, contattare l'amministratore di sistema.
Inoltre, potrebbe essere visualizzato un "Msg 211" messaggio di errore analogo al seguente se si controlla la coerenza del database eseguendo un comando CHECKDB .
Msg 211, livello 23, stato 230, riga 1
Possibile danneggiamento dello schema. Eseguire DBCC CHECKCATALOG.

Msg 0, livello 20, stato 0, riga 0
Si è verificato un errore grave nel comando corrente. I risultati, se presenti, devono essere eliminati
Questo messaggio di errore indica inoltre che i cataloghi di sistema contengano metadati inconsistenti.

Nota. Se si controlla la coerenza di un database è stato aggiornato da SQL Server 2000, eseguire un comando CHECKDB , il comando può restituire un errore di "8992" codice e report delle incoerenze nei cataloghi di sistema. Questo comportamento si verifica perché il comando DBCC CHECKDB in SQL Server 2000 non include la funzionalità del comando DBCC CHECKCATALOG . Pertanto, è non veniva rilevata questi problemi in SQL Server 2000, a meno che non è stato eseguito il comando DBCC CHECKCATALOG .

Per ulteriori informazioni su come utilizzare il comando DBCC CHECKDB , visitare il seguente sito Web Microsoft:
Informazioni generali sul comando DBCC CHECKDB

Riferimenti

Per ulteriori informazioni sui problemi che possono verificarsi quando una tabella di sistema di SQL Server viene aggiornata manualmente, fare clic sul numero dell'articolo per visualizzare l'articolo della Microsoft Knowledge Base:

2688307 ID evento 17659 e 3859 ID evento vengono registrati quando si aggiornano le tabelle di sistema in un database di SQL Server


Proprietà

Identificativo articolo: 2787112 - Ultima modifica: lunedì 4 febbraio 2013 - Revisione: 3.0
Le informazioni in questo articolo si applicano 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
Chiavi: 
kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB2787112 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 2787112
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com