Come risolvere il problema ‘Il database non può essere aperto’ di SQL Server a causa della corruzione del MDF?

Il file del database principale (MDF) è il file del database principale in MS SQL Server che memorizza tutti i dati, comprese viste, tabelle, procedure memorizzate, chiavi esterne e chiavi primarie. A volte, aprendo il file MDF, puoi riscontrare un problema in cui il database SQL Server non può essere aperto e si verifica un errore, come quello indicato di seguito:

  • Errore SQL Server 5171: MDF non è un file di database primario
  • Impossibile aprire il file xxxxx.mdf. Errore del sistema operativo 5: (Accesso negato)”
  • ID evento 824: SQL Server ha rilevato un errore logico di coerenza basato su I/O
  • Msg 8114, Livello 16, Stato 5, Riga 2: Errore nella conversione del tipo di dati varchar in numerico

Questi errori si verificano solitamente quando c’è corruzione nel file MDF. In questo articolo, spiegheremo le possibili cause della corruzione dei file MDF e mostreremo come riparare i file MDF corrotti e risolvere il problema.

Cause della Corruzione nel File MDF

Ci sono varie ragioni che possono portare alla corruzione nel file del database SQL Server (MDF). Alcune delle più comuni sono elencate di seguito:

Crash di MS SQL Server o del Sistema

MS SQL Server o il sistema possono bloccarsi a causa di problemi con il sistema operativo, l’hardware o il software. Se il server o il sistema si arresta mentre si lavora sul file MDF, può danneggiare o corrompere il file.

Arresto Improvviso del Sistema

Un improvviso black-out o spegnimento forzato del sistema mentre il server SQL è in esecuzione può corrompere il file MDF memorizzato sul tuo sistema.

Attacchi di Malware o Virus

I malware o i virus possono danneggiare i file MDF e renderli inaccessibili. Di solito accade quando il sistema non dispone di un software di protezione antivirus o anti-malware.

Problemi con l’unità di archiviazione

Settori danneggiati sull’unità di archiviazione o errori del file system possono corrompere i file del database SQL. Se l’unità è danneggiata, può causare corruzione nei file MDF.

Metodi per Risolvere il Problema ‘Impossibile Aprire il Database’ a Causa della Corruzione del File MDF

Se il tuo file MDF è corrotto, puoi seguire i metodi di seguito per riparare e recuperare il file MDF corrotto, risolvendo così il problema “Impossibile aprire il database” in SQL Server.

Metodo 1: Ripristina il File MDF dal Backup

Se hai creato un backup del tuo file MDF, allora puoi ripristinare il file dal backup. Ma prima di ripristinare, devi verificare se il tuo backup è completo e leggibile. Per fare ciò, puoi utilizzare il comando RESTORE VERIFY ONLY. Se questo comando mostra un messaggio di successo, puoi procedere con il ripristino del backup. Per fare ciò, utilizza il comando Transact SQL seguente:

MS SQL

 

In alternativa, puoi utilizzare il SQL Server Management Studio (SSMS) per ripristinare il backup.

Metodo 2: Usa il comando DBCC CHECKDB

Se il backup non è aggiornato o c’è un problema durante il ripristino del file di backup, puoi utilizzare il comando DBCC CHECKDB per riparare il file MDF corrotto. Per riparare il file del database, è necessario assicurarsi di avere diritti di amministratore sul database. Prima di riparare, imposta il database in modalità utente singolo utilizzando il comando sottostante:

MS SQL

 

Se non riesci a impostare il database in modalità SINGLE_USER, verifica che l’opzione AUTO_UPDATE_STATISTICS_ASYNC sia impostata su OFF

Successivamente, esegui il comando DBCC CHECKDB come indicato di seguito per riparare il file del database (MDF): 

MS SQL

 

Quando il database è riparato, impostalo di nuovo in modalità MULTI_USER utilizzando il comando sottostante:

MS SQL

 

Nota: Il comando DBCC CHECKDB può aiutarti a riparare il file MDF. Tuttavia, durante la riparazione del file, potrebbe deallocare pagine o righe, il che potrebbe portare alla perdita di dati. 

Metodo 3: Utilizzare un Software Professionale di Riparazione SQL

La riparazione del database SQL utilizzando il comando DBCC CHECKDB con l’opzione REPAIR_ALLOW_DATA_LOSS può causare la perdita di dati. Per evitare la perdita di dati, puoi utilizzare un potente software di riparazione MS SQL, come Stellar Repair for MS SQL. Questo software può riparare file MDF corrotti e ripristinare tutti gli oggetti del file, come chiavi primarie, tabelle, trigger, viste, ecc., senza modificare la struttura originale. Salva i dati del file riparato in un nuovo file MDF e in vari altri formati, come CSV, HTML e XLS. Il software supporta i file del database SQL (MDF e NDF) creati su sistemi Windows e Linux. 

Per Concludere

Il problema ‘Impossibile aprire il database’ in MS SQL Server può verificarsi a causa di una corruzione nel file MDF. Per risolvere questo problema, il modo più semplice è ripristinare il file MDF dall’ultimo backup. Se il file di backup è obsoleto o non funziona, puoi utilizzare il comando DBCC CHECKDB per riparare il file MDF corrotto. Se il comando DBCC CHECKDB non riesce a riparare il database, utilizza un potente strumento di riparazione SQL, come Stellar Repair for MS SQL. Può riparare file MDF corrotti e ripristinare tutti i dati in un nuovo file MDF con completa integrità. Puoi installare la versione gratuita di Stellar Repair for MS SQL per esaminare il file MDF corrotto e visualizzare i dati recuperabili.

Source:
https://dzone.com/articles/resolve-sql-server-database-cannot-be-opened-mdf-issue