1. Comprensione della corruzione dei file MDF
I file MDF sono le basi di SQL ServerMeccanismo di archiviazione dati. Questi componenti critici richiedono un rilevamento rapido e metodi di ripristino adeguati in caso di danneggiamento per ridurre al minimo la perdita di dati. Impariamo a conoscere i file MDF e come ripararli.
1.1 Che cosa è un file MDF in SQL Server?
MDF (Master Database File) funge da file di dati principale in SQL Server che contiene tutti i dati utente come tabelle, indici, stored procedure, viste e altri oggetti del database. Questo file contiene sia lo schema che i dati effettivi, il che lo rende il most parte importante di qualsiasi SQL Server database. L'estensione .mdf identifica questo file primario che interagisce con i file di registro (.ldf). Questi file di registro tengono traccia delle informazioni sulle transazioni necessarie per le operazioni di ripristino.
1.2 Cause comuni di danneggiamento dei file MDF
I file MDF possono danneggiarsi per diversi motivi:
- Interruzioni di corrente o improprio SQL Server arresti
- Guasti hardware, in particolare problemi del sottosistema di archiviazione
- Settori danneggiati sull'unità di archiviazione
- Attacchi di malware o virus su sistemi non protetti
- Errori del file system che influiscono sull'archiviazione del database
- Bug del software in SQL Server stessa
Gli arresti anomali del sistema durante le operazioni attive del database possono aumentare notevolmente il rischio di danneggiamento perché possono interrompere importanti operazioni di scrittura.
1.3 Suggerimenti utili per prevenire la corruzione dei file MDF
Ecco come puoi proteggere i tuoi file MDF dalla corruzione:
- Crea backup regolari e controlla automaticamente la loro integrità
- Utilizzare CHECKSUM come opzione di verifica della pagina per tutti i database
- Eseguire i comandi BACKUP DATABASE con CHECKSUM
- Procurati un UPS per evitare spegnimenti improvvisi
- Controllare spesso lo spazio su disco per prevenire problemi di archiviazione
- Aggiornanento SQL Server e il sistema operativo con patch di sicurezza
- Eseguire DBCC CHECKDB regolarmente su tutti i database
1.4 Segnali comuni di un file MDF danneggiato
Rilevare rapidamente la corruzione dei file MDF può far risparmiare molto tempo di ripristino. Di seguito sono riportati alcuni dei segnali più comuni di corruzione dei file MDF:
- Messaggi di errore quando si tenta di allegare o accedere al database
- Il database viene visualizzato in modalità SUSPECT o RECOVERY_PENDING
- Errori di I/O in SQL Server registri, in particolare gli errori 823, 824 o 825
- Errori di coerenza durante le operazioni del database
- Problemi di prestazioni improvvisi
Di seguito sono riportati alcuni dei messaggi di errore più comuni quando il file MDF è corrotto:
Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
xxx.mdf is not a primary database file. (Microsoft SQL Server, Error: 5171)
Attach database failed for Server ‘xxx’. (Microsoft.SqlServer.Smo)
The header for file ‘xxx.mdf’ is not a valid database file header. The FILE SIZE property is incorrect.(Micosoft SQL Server, Error:5172)
SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0x2abc3894; actual: 0x2ebe208e). It occurred during a read of page (1:1) in database ID 12 at offset 0x00000000002000 in file ‘xxx.mdf’. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.(Microsoft SQL Server, Error:824)
SQL Server detected a logical consistency-based I/O error: torn page (expected signature: 0x########; actual signature: 0x#######).
2. Metodi manuali gratuiti per riparare file MDF
SQL ServerI metodi nativi di forniscono metodi gratuiti per riparare la corruzione dei file MDF. Questi approcci manuali possono recuperare database a cui non è possibile accedere, ma richiedono un'esecuzione attenta.
2.1 Ripristina da un backup recente
Il most metodo di recupero affidabiletarts con il ripristino da un backup recente. Questo approccio aggira il danneggiamento ripristinando uno stato integro. È possibile utilizzare il comando RESTORE DATABASE con i parametri FROM DISK appropriati per riportare il database allo stato precedente al danneggiamento. L'integrità dei dati rimane intatta senza compromettere le relazioni tra gli oggetti del database.
2.2 Utilizzare DBCC CHECKDB con le opzioni REPAIR
DBCC CHECKDB offre funzionalità di riparazione integrate se il ripristino del backup non è un'opzione:
DBCC CHECKDB (database_name, REPAIR_ALLOW_DATA_LOSS)
WITH ALL_ERRORMSGS, NO_INFOMSGS;
Il comando ha tre livelli di riparazione:
- REPAIR_FAST: mantiene la sintassi solo per la compatibilità con le versioni precedenti; non esegue riparazioni
- REPAIR_REBUILD: Esegue riparazioni senza perdita di dati
- REPAIR_ALLOW_DATA_LOSS: corregge tutti gli errori segnalati, ma potrebbe sacrificare alcuni dati
Noi abbiamo un guida completa su DBCC CHECKDB che copre tutte le opzioni e gli scenari (è disponibile anche la documentazione ufficiale di Microsoft qui).
2.3 Rischi dell'utilizzo di REPAIR_ALLOW_DATA_LOSS
Le opzioni di riparazione presentano dei rischi. REPAIR_ALLOW_DATA_LOSS potrebbe rimuovere completamente le pagine danneggiate, causando la perdita permanente di dati. Ignora inoltre i vincoli di chiave esterna, che possono compromettere l'integrità relazionale tra le tabelle. Quindi,
- Prima della riparazione, dovresti eseguire manualmente il backup del file MDF danneggiato.
- Dopo la riparazione, è necessario verificare i vincoli utilizzando DBCC CHECKCONSTRAINTS per individuare difetti nella logica aziendale.
2.4 Utilizzare DBCC CHECKTABLE
DBCC CHECKTABLE ti fornisce un tarapproccio ottimizzato per la corruzione in tabelle specifiche:
DBCC CHECKTABLE (table_name, REPAIR_ALLOW_DATA_LOSS);
Questo comando esamina una sola tabella anziché l'intero database. È più veloce e presenta meno rischi una volta individuate le tabelle che presentano problemi.
2.5 Impostare il database in modalità EMERGENCY e SINGLE_USER
I database gravemente danneggiati potrebbero richiedere la modalità di EMERGENZA come ultima opzione:
ALTER DATABASE [DatabaseName] SET EMERGENCY;
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ([DatabaseName], REPAIR_ALLOW_DATA_LOSS);
Gli amministratori del database ottengono l'accesso in sola lettura tramite la modalità di emergenza in caso di errore dell'accesso normale. Il processo ricostruisce il log delle transazioni, ma si perde la coerenza transazionale e si interrompe la catena di ripristino. Eseguite il backup dei file del database prima di tentare riparazioni di emergenza per mantenere aperte le opzioni di ripristino.
2.6 Metodo "Hack Attach"
Se non è possibile allegare un file MDF danneggiato in SQL Server, puoi provare il metodo "hack attach":
- Crea un database fittizio con lo stesso nome del database danneggiato
- Disconnetti il database fittizio
- Elimina i file del database fittizio
- Copia il file MDF danneggiato nella posizione del file fittizio
- Portare il database online
Questo metodo non risolverà il problema della corruzione ma aiuta SQL Server riconosce il file e abilita i comandi di riparazione.
2.7 Correggere un database master danneggiato
Per correggere il danneggiamento del database master sono necessari i seguenti passaggi:
- Copiare il file master.mdf danneggiato come database utente su un altro server.
- Utilizzare i metodi manuali o DataNumen SQL Recovery recuperare oggetti da esso.
- Esportare gli oggetti recuperati in uno script.
- Ricostruire il database master
sul server originale.
- Eseguire lo script generato nel passaggio 3 per ricreare utenti e oggetti.
3. Utilizzando DataNumen SQL Recovery per riparare file MDF corrotti
Se i metodi manuali sopra indicati falliscono, puoi provare strumenti professionali, come DataNumen SQL Recovery, che ti aiuta a riparare i file MDF danneggiati che SQL ServerGli strumenti integrati non possono gestirli. Il software utilizza algoritmi avanzati per ottenere il most dati possibili da file corrotti e offre numerose opzioni di recupero.
3.1 Riparare un singolo file
Il processo di riparazione del singolo file è semplice e facile da seguire:
- Chiudere tutti i programmi che potrebbero modificare il file MDF.
- Start DataNumen SQL Recovery.
- Seleziona il file MDF danneggiato digitandone il nome o cliccando sul pulsante Sfoglia.
- Includi eventuali file NDF correlati, se ne hai bisogno.
- Scegli il formato del database di origine o lascia che sia il sistema a rilevarlo:
- Seleziona dove vuoi salvare il file recuperato.
- Fare clic sul pulsante "StarPulsante "Ripristino", il software si connetterà al tuo SQL Server istanza con il nome del server e i dettagli di accesso.
- Il software riparerà quindi il file utilizzando algoritmi di recupero avanzati.
Vedrai una barra di avanzamento che mostra come procede la riparazione. Al termine, puoi ispezionare il database recuperato in SQL Server Studio di gestione.
3.2 Riparare un batch di file
Le aziende con diversi database danneggiati risparmieranno tempo con la riparazione in batch. È possibile aggiungere tutti i file MDF danneggiati a una coda, impostare le preferenze di output e...tarper il ripristino. Questa funzionalità è particolarmente indicata negli ambienti aziendali che necessitano di risolvere problemi sistemici di database.
Passaggi dettagliati:
- Vai alla scheda "Recupero batch".
- Fare clic su "Aggiungi file" per aggiungerne più SQL Server File MDF da riparare.
- Puoi anche cliccare su "Cerca file" per trovare i file da riparare sul computer locale.
- Fare clic sul pulsante "StarPulsante "Ripristino"
- Tutti i file PST nell'elenco verranno riparati uno alla volta.
3.3 Recupero da disco rigido, immagine disco o file di backup
DataNumen SQL Recovery Fa più del recupero standard. Può ottenere dati SQL da:
- File del disco della macchina virtuale VMWare VMDK
- File VHD del PC virtuale
- File immagine ISO
- File di backup di Windows NT (.bkf)
- File di Acronis True Image (.tib)
- Norton Ghost file (.gho, .v2i)
Questa flessibilità è un ottimo modo per recuperare i dati in vari scenari, come ad esempio:
- Si elimina il database in SQL Server.
- Formatti il disco rigido.
- Guasto del disco rigido.
- Il disco virtuale in VMWare o Virtual PC è corrotto o danneggiato e il database è archiviato su di esso.
- Il file di backup sul supporto di backup è corrotto o danneggiato e non è possibile ripristinare il file del database da esso.
- Il file immagine del disco è corrotto o danneggiato e non è possibile recuperare il file MDF da esso.
Nei casi sopra menzionati, potresti ancora essere in grado di recuperare SQL Server dati direttamente dal disco rigido, dall'immagine del disco o dai file di backup.
Se hai a portata di mano l'immagine del disco o i file di backup, puoi procedere come segue:
- Fare clic sul pulsante “…” per selezionare il file sorgente.
- Nella finestra di dialogo "Apri file", seleziona "Tutti i file (*.*)" come filtro.
- Selezionare l'immagine del disco o il file di backup come file di origine da riparare.
- Imposta il nome del file del database di output fisso, ad esempio E_Drive_fixed.mdf.
Se si desidera effettuare il ripristino direttamente da un disco rigido, è possibile utilizzare DataNumen Disk Image per creare un file immagine del disco rigido come file sorgente in DataNumen SQL Recovery:
- Selezionare il disco rigido o il disco.
- Imposta il nome del file immagine di output.
- Fare clic su “StarPulsante "Clonazione" per creare il file immagine del disco dal disco rigido/disco.
3.4 Recupera record e tabelle eliminati
Se elimini per errore alcuni record in una tabella o elimini per errore alcune tabelle in un database, puoi recuperarle tramite DataNumen SQL Recovery.
Per quanto riguarda i record non eliminati, potrebbero non essere visualizzati nello stesso ordine in cui erano prima di essere eliminati, quindi dopo il ripristino potrebbe essere necessario utilizzare istruzioni SQL per trovare questi record non eliminati.
Per le tabelle non eliminate, se i loro nomi non possono essere recuperati, verranno rinominati come "Recovered_Table1", "Recovered_Table2" e così via...
3.5 Recupero da Ransomware o Virus
Solitamente i metodi standard non riescono a riparare i database crittografati dal malware. DataNumen SQL Recovery Sfrutta algoritmi speciali per ottenere dati da file MDF crittografati da ransomware senza pagare gli aggressori. Il software può recuperare i file anche dopo che la crittografia ne ha danneggiato le intestazioni o le strutture interne.
3.6 Riparare un file recuperato
Se i file MDF sono stati recuperati da DataNumen Data Recovery (o altri strumenti di recupero dati) non possono essere allegati in SQL Server, questi file potrebbero ancora essere danneggiati. In tal caso, utilizzare DataNumen SQL Recovery per ripararli di nuovo, per garantire che i loro dati siano accessibili in SQL Server.
3.7 Recupera da tempdb.mdf
Quando SQL Server è in esecuzione, memorizzerà tutto il temporary dati, incluso tutto il temporary tabelle e procedure di archiviazione, in un temporary database chiamato tempdb.mdf. Quando si verifica un disastro dei dati, se non è possibile recuperare i dati desiderati dall'mdf esistente e dai file ndf associati, è possibile recuperare i dati da tempdb.mdf utilizzando DataNumen SQL Recovery, Come segue:
- Fermare SQL Server Servizio di motore di dati.
- Utilizzando la funzione di ricerca di Windows per cercare il file tempdb.mdf sul computer in cui si trova il file SQL Server l'istanza è installata.
- Dopo aver trovato tempdb.mdf, puoi selezionarlo come file sorgente da recuperare e utilizzarlo DataNumen SQL Recovery per recuperarlo.
3.8 file di esempio
SQL Server versione | File MDF corrotto | File MDF riparato da DataNumen SQL Recovery |
SQL Server 2014 | Errore1_4.mdf | Errore1_4_fixed.mdf |
SQL Server 2014 | Errore2_4.mdf | Errore2_4_fixed.mdf |
SQL Server 2014 | Errore4_4.mdf | Errore4_4_fixed.mdf |
SQL Server 2014 | Errore5_4.mdf | Errore5_4_fixed.mdf |
4. Servizi di recupero online
I servizi online offrono un modo diverso per riparare i database SQL quando scaricare e installare un software di recupero non è possibile o non è conveniente. Questi servizi online aiutano a riparare file MDF danneggiati senza richiedere conoscenze tecniche approfondite.
4.1 Semplici procedure di recupero
I servizi di recupero SQL online seguono una procedura semplice da utilizzare:
- Carica il file danneggiato – Il file MDF danneggiato viene trasferito in modo sicuro al server del fornitore del servizio tramite una connessione crittografata
- Elaborazione e analisi – Il servizio analizza il tuo file con algoritmi specializzati e identifica i dati recuperabili
- Visualizza in anteprima i risultati del recupero – È possibile visualizzare in anteprima gli oggetti del database recuperabili prima di impegnarsi nel ripristino completo
- Scarica il file riparato – Il file di database riparato o gli script SQL diventano disponibili dopo l’elaborazione
Questi servizi cloud funzionano con SQL Server File di database come .mdf, .ndf e .ldf. La dimensione del file e la gravità del danneggiamento determinano il tempo di elaborazione, che varia da secondi a minuti.
4.2 pro e contro
Vantaggi del recupero online:
- Non è necessario installare software: perfetto per ambienti con restrizioni o utenti senza diritti di amministratore
- Funziona su qualsiasi sistema operativo, inclusi macOS e Linux
- Pronto all'uso senza scaricare grandi pacchetti software
- Interfaccia intuitiva adatta a persone con competenze tecniche di base
- Puoi vedere i dati recuperabili prima di acquistare
Limitazioni su cui riflettere:
- Il caricamento di informazioni di database sensibili su server di terze parti solleva preoccupazioni sulla privacy
- La dimensione massima del database ha delle restrizioni
- Meno opzioni di personalizzazione rispetto agli strumenti offline
- La velocità di ripristino dipende dalle prestazioni e dal carico del server
- Le versioni demo mostrano solo alcuni dati recuperabili fino all'acquisto
Gli strumenti di recupero offline offrono maggiore controllo e privacy, ma richiedono maggiori competenze tecniche.ost I servizi online consentono di testarne l'efficacia con demo gratuite. Queste demo recuperano dati campione e contrassegnano altri elementi recuperabili con segnaposto.
La scelta migliore tra recupero online e offline dipende dalle tue esigenze. La pressione del tempo, le competenze tecniche, la delicatezza dei dati e il tipo di danneggiamento del file MDF giocano tutti un ruolo importante in questa decisione.
5. Altre soluzioni
Mentre i metodi trattati nelle sezioni precedenti gestiscono most In scenari di danneggiamento dei file MDF, il panorama del recupero dei database offre soluzioni specializzate aggiuntive. Abbiamo valutato numerosi approcci e compilato questo elenco completo dei most metodi alternativi efficaci che completano le principali strategie di riparazione.
6. Dopo la riparazione: convalida e proteggi il tuo database
Riparare il file MDF danneggiato risolve solo metà del problema. Il database deve essere verificato e protetto dopo il ripristino, per preservare l'integrità dei dati e prevenire problemi futuri.
6.1 Verificare l'integrità dei dati recuperati
Un controllo di convalida dettagliato garantisce che tutti i dati rimangano intatti dopo la riparazione. Il comando DBCC CHECKDB con DATA_PURITY esegue la scansione per rilevare valori non validi:
DBCC CHECKDB (database_name) WITH DATA_PURITY, NO_INFOMSGS;
Questo comando individua i valori di colonna che potrebbero non essere validi o fuori intervallo per i rispettivi tipi di dati. Tieni presente che devi correggere manualmente eventuali errori rilevati, poiché le opzioni di riparazione non possono correggerli automaticamente.
DBCC CHECKCONSTRAINTS consente di verificare che la logica aziendale rimanga intatta perché le operazioni di riparazione non controllano né mantengono i vincoli delle chiavi esterne.
6.2 Ricostruzione di indici e vincoli
L'ottimizzazione delle prestazioni diventa il passo successivo una volta verificata l'integrità dei dati. Le operazioni di riparazione spesso lasciano gli indici frammentati, il che richiede un intervento tempestivo:
ALTER INDEX ALL ON table_name REBUILD;
Il team principale dovrebbe ricostruire prima specifici indici ad alto utilizzo per ripristinare rapidamente le prestazioni sui sistemi critici. Ciò crea nuovi indici correttamente hostindici ed che boost tempi di risposta alle domande.
6.3 Eseguire il backup del database riparato
Crea subito un backup completo del tuo database appena riparato:
BACKUP DATABASE database_name
TO DISK = 'path\backup_file.bak'
WITH CHECKSUM, FORMAT;
L'opzione CHECKSUM verifica l'integrità del backup durante l'operazione. Testare il backup su un server di prova in seguito per assicurarsi che funzioni correttamente prima di utilizzarlo per il ripristino in produzione.
6.4 Impostare monitoraggio e avvisi
Il monitoraggio proattivo aiuta a rilevare potenziali problemi prima che danneggino i dati. Imposta avvisi per metriche chiave, tra cui:
- Percentuale CPU (soglia: 90%)
- Percentuale di spazio dati utilizzato (soglia: 95%)
- Utilizzo del lavoratore (soglia: 60%)
- Stallo (qualsiasi evento)
- Errori di sistema nei tentativi di connessione
Monitoraggio di Azure o SQL Server Management Studio può configurare questi avvisi. Gli avvisi con stato rimangono attivati fino alla risoluzione, evitando così un'ondata di notifiche durante i problemi in corso.
È opportuno eseguire controlli di integrità settimanali sui database critici utilizzando DBCC CHECKDB per individuare tempestivamente eventuali problemi.
7. FAQs
La corruzione del database solleva molte domande da parte degli utenti. Diamo un'occhiata ad alcune domande comuni sulla riparazione dei file MDF in SQL Server.
7.1 Posso recuperare il file MDF senza il file LDF?
Risposta: Sì, con strumenti professionali come DataNumen SQL Recoveryè possibile recuperare il file MDF senza il file LDF.
7.2 Dovrei utilizzare strumenti di riparazione di terze parti o metodi integrati?
Risposta: i metodi integrati meritano il primo tentativo, poiché dispongono di supporto ufficiale. Ciononostante, strumenti di terze parti potrebbero recuperare più dati in casi di corruzione grave. La scelta migliore dipende da:
- Criticità dei dati
- Disponibilità di backup
- Limiti di tempo
- Limiti di spesa
- Tolleranza al rischio per la perdita di dati
8. CONCLUSIONE
SQL Server La corruzione del database richiede un rilevamento rapido e metodi di ripristino adeguati per ridurre al minimo la perdita di dati. I segnali di danneggiamento dei file MDF aiutano ad agire rapidamente in caso di problemi. Sono disponibili diverse opzioni di ripristino, da quelle integrate SQL Server strumenti per soluzioni specializzate di terze parti come DataNumen SQL Recovery Di seguito un riassunto di questo articolo:
Prevenire è meglio che curare. La manutenzione regolare del database, le corrette procedure di backup e il monitoraggio dello stato del disco riducono sostanzialmente i rischi di corruzione. Il sistema deve inoltre verificare l'integrità dei database recuperati e ricostruire gli indici per mantenere i dati affidabili dopo le riparazioni.