Messaggio di errore quando si esegue il comando DBCC CHECKDB in un computer che contiene un database SQL Server
Questo articolo illustra il problema che si verifica quando si esegue il DBCC CHECKDB
comando in un computer che contiene un database SQL Server.
Versione originale del prodotto: SQL Server 2008
Numero KB originale: 960791
Sintomi
Considerare lo scenario descritto di seguito:
Si ripristina un database microsoft SQL Server 2008 o SQL Server 2005 da un backup.
Durante il processo di ripristino vengono visualizzati errori che impediscono il ripristino del database.
È possibile ripristinare correttamente il database dallo stesso backup usando l'opzione CONTINUE_AFTER_ERROR.
In questo scenario, quando si esegue il comando DBCC CHECKDB nel computer che contiene il database SQL Server, viene visualizzato un messaggio di errore simile al seguente:
Msg 8967, Livello 16, Stato 216, <Nome> server, Riga 2
Si è verificato un errore interno in DBCC che ha impedito un'ulteriore elaborazione. Contattare il supporto tecnico.
Risultati DBCC per '<nome> database'.Msg 8921, Livello 16, Stato 1, <Nome> server, Riga 1
Controllo terminato. È stato rilevato un errore durante la raccolta dei fatti. È possibile che tempdb non sia disponibile nello spazio o che una tabella di sistema sia incoerente. Controllare gli errori precedenti.
Inoltre, nel log degli errori di SQL Server potrebbe essere visualizzato un messaggio simile al seguente:
2007-05-26 07:13:49.21 spid58 DBCC ha rilevato una pagina con un LSN maggiore della fine corrente del log LSN (<LSN>) per lo snapshot interno del database. Impossibile leggere la pagina (id file:id pagina), il database '<nome database' (ID> database ID database), LSN = (<LSN>), tipo = 32, isInSparseFile = 1. Eseguire di nuovo questo comando DBCC.
Causa
Questo problema si verifica se il DBCC CHECKDB
comando non è in grado di eseguire i controlli necessari per confermare la coerenza del database. Non è stato possibile eseguire questi controlli per molti motivi. Ad esempio, questo comportamento può verificarsi se nel database sono presenti incoerenze fondamentali, ad esempio incoerenze di metadati o danneggiamento dello snapshot del database. Altre informazioni sulla causa specifica di questo errore possono essere determinate esaminando il diverso stato visualizzato nel messaggio di errore. Nello scenario descritto nella sezione Sintomi , il messaggio di stato 216 indica che il DBCC CHECKDB
comando legge una pagina dallo snapshot interno con un numero di sequenza di log maggiore (LSN) rispetto alla fine del log LSN. Questo comportamento può verificarsi se si ripristinano i database usando l'opzione CONTINUE_AFTER_ERROR .
Soluzione alternativa
Per risolvere questo problema, usare l'hint TABLOCK con il DBCC CHECKDB
comando . In questo modo il DBCC CHECKDB
comando viene completato senza generare il messaggio di errore.
Per altre informazioni sugli hint TABLOCK, visitare il seguente sito Web Microsoft: Hints (Transact-SQL) - Table.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per