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:
BACKUP DATABASE [AdventureWorks2019] TO DISK = N’C:\backups\AdventureWorks2019.bak’ WITH NOFORMAT, NOINIT, NAME = N’AdventureWorks2019-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
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:
ALTER DATABASE Dbtesting SET SINGLE_USER
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):
DBCC CHECKDB (N ’Dbtesting’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS
GO
Quando il database è riparato, impostalo di nuovo in modalità MULTI_USER
utilizzando il comando sottostante:
ALTER DATABASE Dbtesting SET MULTI_USER
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