Condividi tramite


MSSQLSERVER_8992

Si applica a:SQL Server

Dettagli

Articolo Valore
Nome prodotto SQL Server
ID evento 8992
Origine evento MSSQLSERVER
Componente SQLEngine
Nome simbolico DBCC3_CHECK_CATALOG
Testo del messaggio Messaggio di controllo del catalogo ERROR, stato STATE: MESSAGE.

Nota

8992 Il messaggio di errore fa riferimento a un altro messaggio specifico (compreso tra 3851 e 3858) sull'incoerenza effettiva.

Spiegazione

DBCC CHECKCATALOG o DBCC CHECKDB rilevata un'incoerenza nelle tabelle dei metadati di sistema per l'oggetto specificato. Ciò significa che esiste una incoerenza tra l'ID oggetto registrato e l'oggetto specificato nel messaggio di errore.

Questo errore può verificarsi quando una o più tabelle di sistema sono state aggiornate manualmente in modo da creare una incoerenza nei metadati di sistema. Ad esempio, è possibile eliminare manualmente un oggetto dalla sysobjects tabella senza rimuovere le righe associate in altre tabelle, sysindexes ad esempio e syscolumns.

Questo errore può verificarsi durante l'esecuzione DBCC CHECKDB su un database aggiornato da SQL Server 2000 (8.x) a una versione successiva di SQL Server. In SQL Server 2000 (8.x) DBCC CHECKDB non includeva DBCC CHECKCATALOG funzionalità, quindi l'errore non viene rilevato prima dell'aggiornamento, a meno che DBCC CHECKCATALOG non venga eseguito specificamente sul database in SQL Server 2000 (8.x).

È possibile che vengano visualizzati gli errori seguenti insieme all'errore 8992:

ID messaggio Testo del messaggio
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.

Azione dell'utente

Eliminare e ricreare l'oggetto specificato

Se possibile, rimuovere e ricreare l'oggetto specificato. Ad esempio, se l'oggetto è una stored procedure o un tipo definito dall'utente, la ricreazione dell'oggetto potrebbe risolvere il problema.

Ripristina da backup

Se il problema non è correlato all'hardware e è disponibile un backup pulito noto, ripristinare il database dal backup. Questa azione è applicabile solo se il backup non contiene l'errore di metadati.

Esportare i dati in un nuovo database

Se nel backup sono contenuti anche metadati incoerenti, è necessario creare un nuovo database in cui esportare il contenuto di quello esistente.

DBCC CHECKDB non è in grado di correggere l'errore

Questo errore non può essere ripristinato. Se non è possibile ripristinare il database da un backup, contattare il supporto tecnico Microsoft.

Non aggiornare manualmente le tabelle di sistema

Non apportare aggiornamenti manuali alle tabelle di sistema. SQL Server non supporta modifiche manuali ai database di sistema. Se si aggiorna una tabella di sistema in un database di SQL Server, vengono registrati gli eventi seguenti:

Quando una tabella di sistema viene aggiornata 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.

Avviare un database con una tabella di sistema aggiornata manualmente

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

Eseguire il comando DBCC CHECKDB dopo l'aggiornamento manuale di una tabella di sistema

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