Summary: Questo blog vi aiuterà a capire "come risolvere gli errori di coerenza DBCC CHECKDB" nel database di SQL Server utilizzando metodi manuali o uno strumento di riparazione SQL professionale. Inoltre, discuterà le possibili cause degli errori di coerenza del database e vi aiuterà a determinare la causa degli errori.
Quando si esegue il comando DBCC CHECKDB in SQL Server, è possibile che si verifichi un errore di consistenza del database, come ad esempio:
“Data/Ora spid53 DBCC CHECKDB (mydb) eseguito da MYDOMAIN\theuser ha trovato 15 errori e riparato 0 errori. Tempo trascorso: 0 ore 0 minuti 0 secondi. Lo snapshot del database interno ha un punto di divisione LSN = 00000026:0000089d:0001 e un primo LSN = 00000026:0000089c:0001. Si tratta di un messaggio puramente informativo. Non è richiesta alcuna azione da parte dell’utente“.
Il messaggio sopra riportato indica il numero di errori di coerenza riscontrati nel database SQL e quanti sono stati riparati.
Soluzione rapida: Si può prendere in considerazione l’uso di DBCC CHECKDB con le opzioni di riparazione per risolvere gli errori di coerenza del database. Tuttavia, tenere presente che l’esecuzione di dbcc checkdb con ‘REPAIR_ALLOW_DATA_LOSS’ può portare alla perdita di dati. Utilizzare il software Stellar Repair for MS SQL per riparare e ripristinare il database SQL mantenendo l’integrità dei dati. Il software può aiutare a riparare sia i file MDF che NDF di SQL Server e a recuperare tutti gli oggetti del database. Scaricate la versione di prova gratuita del software dal link fornito di seguito per verificarne l’efficacia. |
Quali sono le cause degli errori di consistenza nel database di SQL Server?
DBCC CHECKDB esegue controlli di coerenza fisica e logica sulle pagine del database, sulle pagine di allocazione, sulle relazioni degli indici, ecc. Se uno di questi controlli fallisce, il comando checkdb segnala errori di coerenza. Diversi motivi possono indurre DBCC a segnalare errori di coerenza, come ad esempio problemi nel sistema hardware o in SQL Server Engine, corruzione del file system o pagine corrotte in memoria.
Prima di tentare di risolvere il problema dell’incoerenza del database, è importante capire perché si sono verificati gli errori di coerenza del database.
Come determinare le cause degli errori di consistenza nel database SQL Server?
Per scoprire cosa ha causato gli errori di coerenza del database, si può utilizzare:
1. Registro eventi del sistema Windows
Il controllo del registro eventi di sistema di Windows aiuta a determinare se il problema di I/O è responsabile degli errori di coerenza del database di SQL Server. Specifica se la causa degli errori è legata a un driver del disco o a un problema di hardware. Nel registro di sistema sono registrati diversi ID evento a cui è possibile fare riferimento per trovare informazioni sulla risoluzione della causa dell’errore.
Nota: se si sospetta che gli errori di incoerenza del database siano dovuti a un problema dell’hardware sottostante, eseguire il programma di diagnostica fornito dal produttore dell’hardware per identificare i potenziali problemi hardware. |
2. Analizzare il file ERRORLOG di SQL Server
Controllare il registro degli errori di SQL Server per verificare se sono stati segnalati errori come Access Violations o Assertions. Inoltre, cercate Msg 832 nel file ERRORLOG per determinare se le pagine del database nella cache sono danneggiate.
3. Comando Chkdsk per verificare l’integrità del file system
Un altro motivo che può causare un problema di coerenza in SQL db sono i problemi con il file system. Utilizzate il comando chkdsk command per verificare l’integrità del file system.
4. SQLIOSim per eseguire controlli di integrità sul sistema di dischi
Utilizzate lo strumento SQLIOSim per verificare l’integrità dell’I/O del sistema disco. Lo strumento può aiutare a scoprire potenziali problemi di integrità dei dati. Per ulteriori informazioni su questo strumento, consultare questo link.
Metodi per risolvere gli errori di consistenza di DBCC CHECKDB nel database di SQL Server
Nota: se l’errore in questione è dovuto a problemi di hardware o di file system, provare a risolverli prima di eseguire un ripristino o una riparazione per risolvere l’errore. |
Metodo 1 – Ripristino del database dal backup
La prima e più consigliata soluzione per risolvere l’errore di consistenza di DBCC CHECKDB consiste nel ripristinare il db da un ottimo back-up conosciuto. Tuttavia, se il back-up non è aggiornato o è danneggiato, procedere con la soluzione successiva.
Metodo 2 – Eseguire DBCC CHECKDB con l’opzione di riparazione minima
Se il ripristino dal backup non è possibile, provare a eseguire il comando DBCC CHECKDB con l’opzione di riparazione minima per correggere gli errori di coerenza.
DBCC CHECKDB “REPAIR_ALLOW_DATA_LOSS è il livello minimo di riparazione” che si può tentare per risolvere gli errori. Attenzione però, l’opzione REPAIR_ALLOW_DATA_LOSS, come dice il nome, può portare alla perdita di dati. In sostanza, l’opzione di riparazione può deallocare i dati (come righe, pagine o serie di pagine), che non possono essere accessibili o recuperati dall’utente.
Cos’altro si può fare?
Utilizzare uno strumento specializzato nella riparazione di database SQL come Stellar Repair for MS SQL per risolvere gli errori del database e ripristinare il database in uno stato coerente, mantenendo i dati intatti. È la migliore alternativa all’opzione DBCC CHECKDB Repair_Allow_Data_Loss che aiuta a riparare i file db SQL (MDF e NDF) gravemente danneggiati e recupera tutti gli oggetti db SQL.
Conclusione
Problemi con il file system o l’hardware o pagine di database corrotte in memoria sono alcuni dei motivi che possono causare errori di coerenza del database segnalati da DBCC CHECKDB. È possibile controllare il registro degli errori di sistema di Windows o il registro degli errori di SQL Server per scoprire le cause degli errori e determinare se la risoluzione del file system o dell’hardware può risolvere gli errori di coerenza. In caso contrario, è possibile provare a ripristinare il database da un backup o eseguire DBCC CHECKDB con l’opzione Repair_Allow_Data_Loss per riparare il database. Se non funziona nulla, può essere utile utilizzare il software Stellar Repair for MS SQL. Il software può aiutare a ripristinare l’accesso al database in pochi clic.