Die Master-Datenbankdatei (MDF) ist die primäre Datenbankdatei in MS SQL Server, die alle Daten speichert, einschließlich Ansichten, Tabellen, gespeicherte Prozeduren, Fremdschlüssel und Primärschlüssel. Manchmal treten beim Öffnen der MDF-Datei Probleme auf, bei denen die SQL Server-Datenbank nicht geöffnet werden kann, und man stößt auf einen Fehler, wie den folgenden:
- SQL Server Fehler 5171: MDF ist keine primäre Datenbankdatei
- Kann die Datei xxxxx.mdf nicht öffnen. Betriebssystemfehler 5: (Zugriff verweigert)”
- Ereignis-ID 824: SQL Server hat einen logischen Konsistenz-basierten I/O-Fehler festgestellt
- Nachricht 8114, Ebene 16, Zustand 5, Zeile 2: Fehler beim Konvertieren des Datentyps varchar in numeric
Solche Fehler treten normalerweise auf, wenn es zu einer Beschädigung der MDF-Datei kommt. In diesem Artikel erklären wir die möglichen Ursachen für die Beschädigung von MDF-Dateien und zeigen, wie man beschädigte MDF-Dateien repariert und das Problem löst.
Ursachen für die Beschädigung der MDF-Datei
Es gibt verschiedene Gründe, die zu einer Beschädigung der SQL Server-Datenbank (MDF) Datei führen können. Einige häufige sind unten aufgeführt:
MS SQL Server oder Systemabsturz
MS SQL Server oder das System kann aufgrund von Problemen mit dem Betriebssystem, der Hardware oder der Software abstürzen. Wenn der Server oder das System abstürzt, während an der MDF-Datei gearbeitet wird, kann dies die Datei beschädigen oder corrupt machen.
Plötzlicher Systemausfall
Plötzlicher Stromausfall oder erzwungener Systemabschaltung während der Ausführung des SQL-Servers kann die MDF-Datei auf Ihrem System beschädigen.
Malware- oder Virenangriffe
Malware oder Viren können ebenfalls MDF-Dateien beschädigen und sie unzugänglich machen. Dies tritt normalerweise auf, wenn Ihr System keine Antiviren- oder Anti-Malware-Schutzsoftware hat.
Probleme mit dem Speicherlaufwerk
Defekte Sektoren auf dem Speicherlaufwerk oder Dateisystemfehler können die SQL-Datenbankdateien beschädigen. Wenn das Laufwerk beschädigt ist, kann dies auch zu Korruption der MDF-Dateien führen.
Methoden zur Behebung des Problems „Datenbank kann nicht geöffnet werden“ aufgrund von MDF-Dateikorruption
Wenn Ihre MDF-Datei beschädigt ist, können Sie die unten genannten Methoden befolgen, um die beschädigte MDF-Datei zu reparieren und wiederherzustellen, um das Problem „Datenbank kann nicht geöffnet werden“ im SQL Server zu lösen.
Methode 1: Wiederherstellen der MDF-Datei aus dem Backup
Wenn Sie eine Sicherungskopie Ihrer MDF-Datei erstellt haben, können Sie die Datei aus dem Backup wiederherstellen. Bevor Sie jedoch wiederherstellen, müssen Sie überprüfen, ob Ihr Backup vollständig und lesbar ist. Hierfür können Sie den Befehl RESTORE VERIFY ONLY verwenden. Wenn dieser Befehl eine Erfolgsmeldung anzeigt, können Sie mit der Wiederherstellung des Backups fortfahren. Verwenden Sie hierfür den folgenden Transact-SQL-Befehl:
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
Alternativ können Sie das SQL Server Management Studio (SSMS) verwenden, um das Backup wiederherzustellen.
Methode 2: Verwenden des DBCC CHECKDB-Befehls
Wenn das Backup nicht aktualisiert ist oder ein Problem beim Wiederherstellen der Backup-Datei auftritt, können Sie den DBCC CHECKDB-Befehl verwenden, um die beschädigte MDF-Datei zu reparieren. Um die Datenbankdatei zu reparieren, müssen Sie sicherstellen, dass Sie Administratorrechte in der Datenbank haben. Bevor Sie reparieren, setzen Sie die Datenbank in den Einzelbenutzermodus mit dem folgenden Befehl:
ALTER DATABASE Dbtesting SET SINGLE_USER
Wenn Sie die Datenbank nicht auf den SINGLE_USER
-Modus setzen können, überprüfen Sie, ob die AUTO_UPDATE_STATISTICS_ASYNC-Option auf OFF
gesetzt ist.
Führen Sie anschließend den DBCC CHECKDB
-Befehl wie unten angegeben aus, um die Datenbank (MDF) zu reparieren:
DBCC CHECKDB (N ’Dbtesting’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS
GO
Wenn die Datenbank repariert ist, setzen Sie sie wieder in den MULTI_USER
-Modus durch Verwendung des folgenden Befehls:
ALTER DATABASE Dbtesting SET MULTI_USER
Hinweis: Der DBCC CHECKDB
Befehl kann Ihnen helfen, die MDF-Datei zu reparieren. Allerdings kann es beim Reparieren der Datei dazu kommen, dass Seiten oder Zeilen dealloziert werden, was zu Datenverlust führen kann.
Methode 3: Verwenden Sie ein professionelles SQL-Reparaturwerkzeug
Die Reparatur der SQL-Datenbank mit dem DBCC CHECKDB
Befehl und der REPAIR_ALLOW_DATA_LOSS
Option kann zu Datenverlust führen. Um Datenverlust zu vermeiden, können Sie eine leistungsstarke MS SQL-Reparatursoftware wie Stellar Repair for MS SQL verwenden. Diese Software kann beschädigte MDF-Dateien reparieren und alle Dateielemente wie Primärschlüssel, Tabellen, Trigger, Sichten usw. wiederherstellen, ohne die ursprüngliche Struktur zu verändern. Sie speichert die reparierten Dateidaten in einer neuen MDF-Datei und in verschiedenen anderen Formaten wie CSV, HTML und XLS. Die Software unterstützt SQL-Datenbank (MDF und NDF) Dateien, die auf Windows- und Linux-Systemen erstellt wurden.
Zusammenfassend
Das Problem „Datenbank kann nicht geöffnet werden“ im MS SQL Server kann aufgrund einer Beschädigung der MDF-Datei auftreten. Um dieses Problem zu beheben, ist der einfachste Weg, die MDF-Datei aus dem letzten Backup wiederherzustellen. Wenn die Backup-Datei veraltet oder nicht funktionsfähig ist, können Sie den DBCC CHECKDB
Befehl verwenden, um die beschädigte MDF-Datei zu reparieren. Wenn der DBCC CHECKDB
Befehl die Datenbank nicht reparieren kann, verwenden Sie ein leistungsstarkes SQL-Reparaturwerkzeug wie Stellar Repair for MS SQL. Es kann beschädigte MDF-Dateien reparieren und alle Daten in einer neuen MDF-Datei mit vollständiger Integrität wiederherstellen. Sie können die kostenlose Version von Stellar Repair for MS SQL installieren, um die beschädigte MDF-Datei zu scannen und die wiederherstellbaren Daten anzuzeigen.
Source:
https://dzone.com/articles/resolve-sql-server-database-cannot-be-opened-mdf-issue