Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
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.