Riparazione di un file MDF danneggiato di un database SQL Server
Riassunto: Questo blog descrive le possibili ragioni del danneggiamento del file MDF del database SQL Server. Descrive inoltre il processo manuale di riparazione di un file MDF del database SQL Server danneggiato, le sfide associate al processo manuale e l'alternativa migliore per superare queste sfide.
MDF è il file di dati primario del database di SQL Server, dove sono archiviati tutti i dati, compresi i componenti come indici, indici XML, viste, tabelle, trigger e stored procedure. Viene anche chiamato file di database principale o master di SQL Server. Ogni database SQL Server contiene almeno un file MDF.
Il file MDF può essere descritto come l’elemento principale per la gestione del database SQL.
Diverse ragioni portano alla corruzione del file di database di SQL Server (.mdf). Quando ciò accade, il database diventa inaccessibile e può portare a una possibile perdita di dati se il file non viene riparato in tempo.
Prima di discutere le varie soluzioni per riparare un file MDF, diamo un’occhiata ad alcune delle ragioni più comuni che possono portare alla corruzione di un file di database SQL.
Soluzione rapida: Se non vuole rischiare la perdita di dati, utilizzi Stellar Repair for MS SQL per riparare il file MDF danneggiato e recuperare tutti gli oggetti senza danneggiare il database. Il software è compatibile con MS SQL Server 2019, 2017, 2016, 2014, 2012, 2008, 2008 R2 e versioni precedenti. |
Possibili cause di danni al file MDF
Di seguito sono riportate alcune ragioni comuni che possono portare a un file MDF danneggiato in SQL Server:
- Interruzione improvvisa dell’alimentazione
- Bug nel server stesso
- Sistema operativo difettoso
- Arresto inatteso (brusco) del sistema.
- Problemi hardware, epidemie di virus, ecc.
- File salvato su un dispositivo di archiviazione esterno danneggiato
Come riparare i file MDF?
Microsoft SQL Server offre un comando integrato nella console del database, CHECKDB (DBCC CHECKDB), per verificare l’integrità fisica e logica degli oggetti db eseguendo le seguenti operazioni in sequenza:
- Esegua il comando DBCC CHECKALLOC nel database.
- Esegua il comando DBCC CHECKCATALOG nel database.
- Esegua DBCC CHECKTABLE per ogni vista e tabella del database.
- Autenticazione del contenuto di ogni vista indicizzata disponibile nel database.
- Autenticazione della costanza a livello di collegamento tra i metadati della tabella, le directory del file system e i file quando archivia dati VARBINARI (max) con FILESTREAM nel file system.
- Autenticazione dei dati del Service Broker nel database.
Nota: per maggiori informazioni, consulti la descrizione dei comandi DBCC di cui sopra. |
DBCC CHECKDB verifica la consistenza delle pagine db e altri controlli strutturali. Quindi segnala eventuali errori.
Se DBCC CHECKDB segnala errori di coerenza nel database, provi a ripristinare il database da una copia di backup nota e buona. Tuttavia, se la copia di backup non è disponibile o non è la più recente, CHECKDB offre diverse opzioni di riparazione per riparare un file MDF danneggiato in SQL Server.
Legga questo: Riparazione del database SQL con il comando DBCC CHECKDB |
Le opzioni di riparazione sono le seguenti:
- REPAIR_FAST – La sintassi è mantenuta solo per la compatibilità all’indietro; non aiuta ad eseguire azioni di riparazione. La sintassi di questa opzione di riparazione è:
DBCC CHECKDB (‘DB-Name’, REPAIR_FAST)
- REPAIR_REBUILD – Questa opzione di riparazione esegue un’operazione di riparazione senza rischio di perdita di dati. Ciò consente di eseguire riparazioni rapide, come la riparazione di righe mancanti in indici non raggruppati, e anche riparazioni lunghe, come la ricostruzione di indici. La sintassi è:
DBCC CHECKDB (‘DB-Name’, REPAIR_REBUILD)
Nota: questa funzione (REPAIR_REBUILD) non risolve gli errori che contengono dati FILESTREAM.
- REPAIR_ALLOW_DATA_LOSS – Microsoft raccomanda di utilizzare questa opzione di riparazione come ultima risorsa per risolvere tutti gli errori. Questo perché anche se l’opzione ripara gli errori, come il rilascio di una pagina o di una riga, eccetera, potrebbe causare una perdita di dati. La sintassi è:
DBCC CHECKDB (‘Nome DB’, REPAIR_ALLOW_DATA_LOSS)
Nota: in alternativa a DBCC CHECKDB, utilizzi l’opzione ‘Repair_Allow_Data_Loss‘ per riparare il file MDF danneggiato senza perdita di dati. |
Cosa considerare quando si utilizzano le opzioni di riparazione di DBCC CHECKDB
Quando utilizza le opzioni di riparazione DBCC CHECKDB, presti attenzione ai seguenti requisiti:
- Il primo e più importante requisito è che il rispettivo database sia in modalità utente singolo per poter eseguire uno dei tre comandi di riparazione. Se un utente non mette il database in modalità utente singolo, appare il seguente messaggio di errore:
“L’istruzione di riparazione non viene elaborata. Il database deve essere in modalità utente singolo.
L’esecuzione di DBCC è stata completata. Se DBCC ha emesso messaggi di errore, contatti il suo amministratore di sistema“.
Può impostare il DB SQL in modalità utente singolo con il seguente comando:
ALTER DATABASE Nome del database SET SINGLE_USER CON ROLLBACK IMMEDIATO
- In secondo luogo, deve utilizzare la sintassi per eseguire correttamente i comandi di riparazione DBCC CHECKDB. Solo così le discrepanze saranno corrette e otterrà un file di database sano.
- Le istruzioni di riparazione DBCC non sono valide per le tabelle ottimizzate per la memoria. In questi casi, cioè quando si verificano problemi di integrità in una tabella ottimizzata per la memoria, deve ripristinare il backup per accedere ai dati del file db, a condizione che il file di backup non sia danneggiato.
Lo strumento di riparazione DBCC CHECKDB non è riuscito! Cosa fare ora?
Se il DBCC CHECKDB integrato non è in grado di riparare il file db SQL, può eseguire un software di riparazione SQL specializzato come Stellar Repair for MS SQL. Il software la aiuterà a riparare il file MDF e ad estrarre i dati in esso contenuti, senza dover investire molto tempo e fatica nella scrittura di codice complesso.
Questo software di riparazione SQL aiuta a verificare la presenza di voci errate nel database, a correggere gli schemi di bit e a riportare il database in uno stato coerente.
Caratteristiche principali del software Stellar Repair for MS SQL
- Ripara i file MDF e NDF danneggiati
- Ripristina tutti i componenti del database, come tabelle, chiavi, trigger, stored procedure, ecc.
- Supporta il recupero dei record cancellati dal database di SQL Server.
- Mostra un’anteprima degli oggetti del database recuperabili
- Offre diverse opzioni per salvare i file DB SQL riparati nei formati MS SQL, XLS, CSV e HTML.
Conclusione
Quando un file MDF si danneggia, l’unica preoccupazione degli amministratori di sistema o di database (DBA) è quella di garantire l’accesso al database e il ripristino di tutti i dati nel loro stato originale e intatto.
Può facilmente ripristinare il file di database dall’ultima copia di backup, ma se questa non è disponibile o è danneggiata, l’esecuzione di DBCC CHECKDB con le opzioni di riparazione può essere utile. Se nessuna delle opzioni di riparazione funziona per lei o non vuole rischiare di perdere i dati a causa dell’opzione REPAIR_ALLOW_Data_LOSS, l’utilizzo del software Stellar Repair for MS SQL è il modo migliore per riparare un file MDF del database di SQL Server danneggiato. Può aiutare a riparare i file di database (.mdf e .ndf) quando la riparazione DBCC CHECKDB non riesce.