DBCC CHECKDB REPAIR_REBUILD con esempio
Riassunto: Questo blog illustra i passaggi per eseguire la riparazione del database SQL eseguendo DBCC CHECKDB con il comando REPAIR_REBUILD. Illustra inoltre le possibili cause di corruzione del database e i modi per risolverle prima di riparare il database. Il blog spiega come eseguire il comando "DBCC CHECKDB REPAIR_REBUILD con un esempio" con istruzioni passo passo. Inoltre, suggerisce uno strumento di riparazione SQL come alternativa alle opzioni di riparazione di DBCC CHECKDB.
Gli amministratori di database devono eseguire il comando DBCC CHECKDB per verificare la coerenza fisica e logica del database SQL. Questi controlli possono fallire a causa della corruzione del database. Se DBCC CHECKDB segnala errori di coerenza, è necessario identificare la causa principale della corruzione del database per trovare la migliore soluzione possibile per risolvere gli errori.
Possibili motivi di corruzione del database SQL
Di seguito sono riportati i motivi più comuni che portano al danneggiamento del database di SQL Server:
- Hardware difettoso: Verificare la presenza di difetti nei controller dei dischi, nei driver dei dispositivi o in altri componenti hardware. Se gli errori di coerenza sono dovuti a problemi hardware, assicurarsi che la configurazione del dispositivo hardware sia conforme ai requisiti di input/output di Microsoft SQL Server Database Engine. In alternativa, contattare il fornitore di hardware o il produttore del dispositivo per risolvere i problemi hardware sottostanti.
- Bug nel software SQL: se non è possibile individuare alcun problema nell’hardware sottostante, verificare la presenza di bug nel software, in quanto Microsoft è nota per causare il danneggiamento degli indici o la perdita di dati durante l’esecuzione di una ricostruzione online degli indici in SQL Server 2012/2014.
- Attacco di virus o malware: I file del database SQL possono danneggiarsi a causa di un attacco di virus o malware, rendendo i file inaccessibili.
Se non vengono rilevati problemi hardware o software, la soluzione migliore per risolvere il problema è ripristinare il database dal backup più recente. Se non esiste un backup valido, è possibile risolvere gli errori eseguendo il comando DBCC CHECKDB con l’opzione di riparazione necessaria per risolvere errori specifici. La sezione seguente illustra come risolvere gli errori di corruzione del database quando “REPAIR_REBUILD” è raccomandato come livello minimo di riparazione per risolvere tutti gli errori segnalati da DBCC CHECKDB.
Come risolvere un database SQL corrotto utilizzando ‘DBCC CHECKDB with REPAIR_REBUILD’?
Il comando REPAIR_REBUILD aiuta a ricostruire le pagine corrotte o a riparare le righe mancanti negli indici non raggruppati. È possibile utilizzarlo per eseguire la riparazione del database “senza la possibilità di perdita di dati”.
Prima di eseguire il comando ‘DBCC CHECKDB REPAIR_REBUILD’, assicuratevi di mettere il database in modalità SINGLE_USER eseguendo il comando seguente:
ALTER DATABASE your_dbname SET SINGLE_USER |
Questo è importante perché la riparazione di un db SQL e l’esecuzione del comando DBCC CHECKDB sono due operazioni separate. Inoltre, un database è in modalità MULTI-UTENTE. Per ripararlo, è necessario portarlo in modalità SINGLE_USER per evitare di ottenere errori.
Una volta impostato il database in modalità SINGLE_USER, eseguire il seguente comando per riparare il database:
DBCC CHECKDB(‘your_dbname’, REPAIR_REBUILD) |
Una volta riparato il database, impostarlo nuovamente in modalità MULTI_USER:
ALTER DATABASE your_dbname SET MULTI_USER |
Esempio di DBCC CHECKDB con REPAIR_REBUILD
Ecco un esempio che mostra un messaggio di errore che consiglia di eseguire “repair_rebuild come livello minimo di riparazione” sul database VLDB.
Seguire i seguenti passaggi per risolvere l’errore della tabella:
Passo 1: aprire SQL Server Management Studio (SSMS) ed eseguire questo comando:
ALTERARE IL DATABASE VLDB IMPOSTANDO SINGLE_USER CON ROLLBACK IMMEDIATO; |
Fase 2: Una volta che il db è in modalità SINGLE_USER, fare clic con il pulsante destro del mouse su Database e fare clic su Aggiorna.
Fase 3: ora espandere i database facendo clic sull’icona “+”. Si può notare che ‘VLDB’ è in modalità SINGLE_USER.
Fase 4: eseguire il seguente comando DBCC CHECKDB repair rebuild:
Se non ci sono errori, la query verrà eseguita correttamente. In tal caso, portare il db in modalità MULTI_USER.
Cosa succede se ‘DBCC CHECKDB REPAIR_REBUILD’ fallisce?
L’opzione REPAIR_REBUILD può risolvere solo gli errori di corruzione minori. Pertanto, potrebbe non riuscire a risolvere tutti gli errori segnalati da CHECKDB e risultare in un errore che consiglia “REPAIR_ALLOW_DATA_LOSS come livello minimo di riparazione”, come si può vedere nell’immagine seguente.
Eseguire il comando “DBCC CHECKDB with REPAIR_ALLOW_DATA_LOSS” come ultima risorsa per riparare il database, poiché comporta il rischio di perdita di dati. Un’alternativa migliore è quella di utilizzare uno SQL repair tool professionale.
Il software Stellar Repair for MS SQL può aiutare a risolvere tutti i tipi di errori di corruzione del database SQL. Ripara il file MDF del database e recupera tutti gli oggetti, aiutando così a ripristinare il database nella sua forma originale senza perdita di dati.
Conclusione
Se si verificano errori di coerenza dall’esecuzione del comando DBCC CHECKDB, l’uso dell’opzione REPAIR_REBUILD può aiutare a risolvere gli errori senza alcuna perdita di dati. Tuttavia, potrebbe non riuscire a risolvere tutti gli errori di coerenza. Potrebbe essere necessario eseguire DBCC CHECKDB con REPAIR_ALLOW_DATA_LOSS per risolvere il danneggiamento del database, ma è bene ricordare che ciò può comportare la perdita di dati. L’uso del software Stellar Repair for MS SQL può aiutare a risolvere un database gravemente danneggiato e a ripristinarlo senza alcuna modifica alla sua forma originale.