Come ripristinare i file di database di Microsoft SQL Server 2022 (MDF, LDF e BAK)
In questo articolo esamineremo come ripristinare i file di database di Microsoft SQL Server 2022. Mostreremo cosa fare se un database o i relativi file vengono eliminati accidentalmente, nonché come utilizzare un backup disponibile per riportare il database a uno stato operativo.

- Funzionalità di SQL Server
- Come accedere ai dischi del server
- Come recuperare un database Microsoft SQL Server 2022 eliminato
- Conclusione
- Domande frequenti
- Commenti
Per recuperare i file, utilizzeremo Hetman RAID Recovery. Il programma può individuare i file MDF, LDF e BAK su unità fisiche, array RAID e dischi dinamici, nonché lavorare con immagini disco create settore per settore. I file recuperati possono essere successivamente utilizzati per Restore o Attach tramite Microsoft SQL Server.
Hetman RAID Recovery supporta Windows, Linux e macOS.
Come recuperare un database SQL Server 2022 eliminato? File MDF, LDF e BAK
Funzionalità di SQL Server
Quali file utilizza Microsoft SQL Server e perché sono importanti durante il ripristino:
- MDF – il file dati principale del database. Contiene la struttura del database, le tabelle, i record, gli indici e altri oggetti. Questo file è la principale origine dei dati quando è necessario ripristinare in SQL Server un database eliminato.
- LDF – il file di log delle transazioni. SQL Server vi registra le modifiche al database. Il log viene utilizzato per mantenere la coerenza dei dati ed è un componente importante quando si esegue l’attach di un database dai relativi file fisici.
- BAK – il file di backup. Nel nostro test si tratta di un backup completo del database creato da SQL Server. Se un file di questo tipo è disponibile e non è danneggiato, può essere utilizzato per Restore senza dover eseguire l’attach dei file MDF e LDF originali.
Pertanto, lo сценарio di ripristino dipende da quali file sono stati conservati o trovati:
- Se è disponibile un file BAK, il database viene ripristinato dal backup.
- Se non è disponibile alcun backup, ma i file MDF e LDF sono stati recuperati, possono essere utilizzati per Attach, a condizione che i file rimangano leggibili e coerenti.
| Funzionalità | Descrizione |
|---|---|
| Modello di dati relazionale | SQL Server archivia le informazioni in tabelle correlate tra loro tramite chiavi e vincoli. |
| Linguaggio di query T-SQL | Estensione di SQL utilizzata per creare query, gestire i dati, scrivere procedure ed eseguire operazioni amministrative. |
| File di database MDF e NDF | MDF è il file dati principale del database, mentre NDF è un file dati aggiuntivo. Contengono tabelle, indici e altri oggetti del database. |
| File di log delle transazioni LDF | Archivia i record delle transazioni e delle modifiche nel database. Il log viene utilizzato per il ripristino dopo un arresto anomalo e per la coerenza dei dati. |
| Backup e ripristino | SQL Server supporta backup completi, differenziali e del log delle transazioni, consentendo di ripristinare un database a un punto temporale richiesto con la configurazione appropriata. |
| Transazioni e ACID | Garantiscono atomicità, coerenza, isolamento e durabilità delle operazioni sui dati. |
| Indici | Accelerano le ricerche e l’esecuzione delle query, ma possono danneggiarsi o richiedere la ricostruzione dopo determinati guasti. |
| Meccanismi di controllo dell’integrità | Chiavi primarie e esterne, vincoli e controlli aiutano a mantenere la correttezza dei dati. |
| Modelli di ripristino | I modelli di ripristino Simple, Full e Bulk-logged determinano le funzionalità di backup del log delle transazioni e le opzioni di ripristino del database. |
| Strumenti diagnostici | Il comando DBCC CHECKDB verifica l’integrità logica e fisica di un database e aiuta a individuare i danneggiamenti. |
Per i test, abbiamo preparato Windows Server 2022 con Microsoft SQL Server 2022. Il database TestDB si trova su un Dynamic Spanned Volume con file system NTFS. Contiene tabelle, record di test dei clienti e file archiviati nel campo VARBINARY(MAX). Il file MDF è archiviato nella directory SQLData, il file di log LDF si trova in SQLLogs, e il backup completo TestDB_Full.bak si trova nella directory SQLBackup.
Come accedere ai dischi del server
METODO 1. Collegamento delle unità a una workstation
Se i file di SQL Server sono archiviati su un disco fisico separato, questo può essere collegato a una workstation tramite un adattatore SATA, un adattatore USB o una docking station.
Se il database era archiviato su un Dynamic Spanned Volume o su un’altra configurazione multիդisco, è preferibile avere accesso a tutte le unità che ne facevano parte.
Se non è possibile collegare tutti i dischi contemporaneamente, è possibile crearne immagini settore per settore. Per farlo in Hetman RAID Recovery, selezionare l’unità fisica, avviare Save disk, specificare la posizione di salvataggio e attendere il completamento del processo di copia.

Dopodiché, il disco può essere scollegato e si può creare nello stesso modo un’immagine dell’unità successiva. Montare le immagini pronte tramite Mount disk e utilizzarle per l’analisi insieme ai dischi fisici.

Questo approccio consente inoltre di continuare a lavorare con le copie senza sottoporre i dischi sorgente a carichi aggiuntivi.

METODO 2. Configurazione dell’accesso SSH
Esiste un altro modo per accedere ai dischi senza rimuoverli fisicamente. Se Windows Server 2022 è ancora in esecuzione e accessibile tramite rete, le unità possono essere collegate a Hetman RAID Recovery da remoto tramite SSH.
Per farlo, configurare in anticipo OpenSSH Server su Windows Server.

Avviare il servizio OpenSSH SSH Server – sshd – e, se necessario, impostarlo per l’avvio automatico.


Verificare inoltre l’accesso tramite porta TCP 22 e assicurarsi che l’account utilizzato per la connessione disponga delle autorizzazioni necessarie per accedere alle unità del server.
Dopo aver configurato il server, aprire Hetman RAID Recovery. Nel menu superiore, andare su Tools e selezionare Connect via SSH.

Nel campo Remote server, inserire l’indirizzo IP del Windows Server e nel campo Port inserire 22. Sotto, nella sezione Credentials, selezionare il richiesto Authentication method e inserire nome utente e password dell’account. Se necessario, è possibile attivare Save server details e Save authentication data in modo da non dover reinserire questi parametri. Quindi fare clic su Next.

Dopo una connessione riuscita al server, nella finestra successiva verranno visualizzati i dischi fisici e gli array logici disponibili. Selezionare le unità appartenenti al JBOD richiesto e continuare.

Dopo la conferma, verranno visualizzati nella finestra principale di Hetman RAID Recovery, dove sarà possibile lavorarci allo stesso modo delle unità collegate localmente.
Prestare attenzione all’infrastruttura di rete. Poiché le operazioni con le unità vengono eseguite tramite rete, per una connessione stabile e confortevole è preferibile che la workstation, Windows Server e la rete locale supportino velocità di trasferimento dati pari a 1 Gbps e superiori. Ciò contribuirà ad accelerare l’analisi delle unità e il trasferimento dei file recuperati.
Questo metodo è particolarmente comodo se il server è ancora in esecuzione e la rimozione fisica e il collegamento di un gran numero di unità a un altro computer sono indesiderati o difficili.
Come recuperare un database Microsoft SQL Server 2022 eliminato
METODO 1. Ripristino di un database da un file BAK
Passiamo al primo scenario. In questo caso, il file di backup completo TestDB_Full.bak è disponibile dopo il recupero e può essere utilizzato per ripristinare il database.
Aprire Microsoft SQL Server Management Studio e connettersi all’istanza di SQL Server richiesta.

Nell’albero di Object Explorer, aprire il menu contestuale di Databases e selezionare Restore Database.

Come origine, selezionare Device, specificare il file TestDB_Full.bak e verificare che SQL Server abbia identificato correttamente il backup.

Per evitare di modificare il database originale TestDB, ripristinarlo con un nome separato, TestDB_Restored.

Nelle impostazioni di ripristino, specificare nomi e percorsi separati per i file fisici del database in modo che non confliggano con i file del database originale TestDB. Per la nuova istanza, utilizzare TestDB_Restored.mdf e TestDB_Restored_log.ldf.

Avviare Restore e attendere il completamento dell’operazione. Dopo un ripristino riuscito, il database TestDB_Restored appare in Object Explorer.

Aprirlo e verificare le tabelle e i record. Assicurarsi inoltre che i dati archiviati nel campo VARBINARY(MAX) siano disponibili. In questo modo verifichiamo non solo la creazione del database, ma anche la disponibilità dei suoi contenuti dopo il ripristino dal file BAK.

METODO 2. Ripristino di un database eliminato
Nel caso successivo, il database TestDB_Restored è stato eliminato accidentalmente e non viene più visualizzato in Microsoft SQL Server Management Studio. Anche i relativi file fisici TestDB_Restored.mdf e TestDB_Restored_log.ldf non sono più disponibili.
Il Dynamic Spanned Volume rimane comunque accessibile, quindi non è necessario ricostruire nuovamente il JBOD.

Aprire Hetman RAID Recovery, selezionare il volume logico NTFS in cui erano archiviati i file di SQL Server e avviare una Fast scan.

Al termine dell’analisi, andare nelle directory in cui erano archiviati i file MDF e LDF e controllare i risultati. Trovare i file eliminati TestDB_Restored.mdf e TestDB_Restored_log.ldf, e annotarne nome, dimensione e posizione.


Se la Fast scan non trova i file richiesti o il risultato è incompleto, tornare alla selezione della modalità di analisi e avviare la Full scan. Esegue un’analisi più approfondita di NTFS e può trovare più dati eliminati.
Dopo aver trovato i file MDF e LDF richiesti, aggiungerli all’elenco di recupero e salvarli su un’altra unità fisica.

Non è consigliabile recuperare i file sul volume dinamico spanned originale, poiché nuove scritture potrebbero sovrascrivere altri dati che potrebbero ancora essere recuperati.
Dopo aver recuperato i file fisici, tornare a Microsoft SQL Server Management Studio. Nel menu contestuale di Databases, selezionare Attach.

Aggiungere il file TestDB_Restored.mdf recuperato e verificare che SQL Server rilevi il file di log associato TestDB_Restored_log.ldf.

Se entrambi i file rimangono leggibili e coerenti, eseguire Attach. Dopo l’attach, il database appare nuovamente nell’elenco di SQL Server.

Aprire le tabelle e verificare i record. Inoltre, controllare la disponibilità dei dati VARBINARY(MAX) utilizzati nel database di test. Se la struttura, i record e i file archiviati sono disponibili, il recupero può essere considerato riuscito.

Conclusione
Abbiamo esaminato due scenari principali per lavorare con i file di database di Microsoft SQL Server 2022:
- Nel primo caso, il file di backup BAK disponibile è stato utilizzato per ripristinare il database con Restore.
- Nel secondo caso, dopo l’eliminazione del database, i relativi file fisici MDF e LDF sono stati trovati e recuperati con Hetman RAID Recovery, dopodiché sono stati riattaccati a SQL Server tramite Attach.
Hetman RAID Recovery consente di lavorare con unità fisiche, immagini settore per settore e dischi remoti tramite SSH, e supporta anche Windows, Linux e macOS. Ciò rende possibile organizzare il recupero anche quando i file di SQL Server sono archiviati su configurazioni multидisco o quando le unità del server sono difficili da rimuovere e collegare a un altro computer.

