Sommario
    Riparazione database SQL

    DBCC CHECKDB REPAIR_REBUILD con esempio


    Sommario

      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.

      Esempio di DBCC CHECKDB con REPAIR REBUILD

      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;
      eseguire questo comando

      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.

      Aggiorna

      Fase 3: ora espandere i database facendo clic sull’icona “+”. Si può notare che ‘VLDB’ è in modalità SINGLE_USER.

      modalità SINGLE_USER

      Fase 4: eseguire il seguente comando DBCC CHECKDB repair rebuild:

      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.

      L'opzione REPAIR_REBUILD può risolvere solo gli errori di corruzione minori.

      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.

      Download gratuito per Windows

      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.

      Was this article helpful?

      No NO

      Circa l'autore

      Himanshu Shakya

      Himanshu is a Tech Enthusiast & Blogger at Stellar and having knowledge of Japanese Language. And apart from this in his spare time he likes playing Chess.

      Post correlato

      PERCHÉ STELLAR® È LEADER MONDIALE

      Perché scegliere Stellar?

      • 0M+

        Clienti

      • 0+

        Anni di eccellenza

      • 0+

        Ingegneri R&S

      • 0+

        Paesi

      • 0+

        PARTNER

      • 0+

        Premi ricevuti