Summary: Dieser Blog beschreibt mögliche Gründe für die Beschädigung der MDF-Datei einer SQL Server-Datenbank. Er beschreibt auch den manuellen Prozess der Reparatur einer beschädigten SQL Server-Datenbank-MDF-Datei, die mit dem manuellen Prozess verbundenen Herausforderungen und die beste Alternative zur Überwindung dieser Herausforderungen.
MDF ist die primäre Datendatei der SQL Server-Datenbank, in der alle Daten gespeichert werden, einschließlich Komponenten wie Indizes, XML-Indizes, Ansichten, Tabellen, Trigger und gespeicherte Prozeduren. Sie wird auch als die Haupt- oder Master-Datenbankdatei des SQL Servers bezeichnet. Jede SQL Server-Datenbank enthält mindestens eine MDF-Datei.
Die MDF-Datei kann als das Hauptelement für die Verwaltung der SQL-Datenbank bezeichnet werden.
Verschiedene Gründe führen zur Beschädigung Ihrer SQL Server-Datenbankdatei (.mdf). Wenn dies geschieht, wird die Datenbank unzugänglich und kann zu einem möglichen Datenverlust führen, wenn die Datei nicht rechtzeitig repariert wird.
Bevor wir verschiedene Lösungen zur Reparatur einer MDF-Datei erörtern, lassen Sie uns einen Blick auf einige der häufigsten Gründe werfen, die zur Beschädigung einer SQL-Datenbankdatei führen können.
Schnelle Lösung: Wenn Sie den Verlust von Daten nicht riskieren wollen, verwenden Sie Stellar Repair for MS SQL, um die beschädigte MDF-Datei zu reparieren und alle Objekte wiederherzustellen, ohne die Datenbank zu beschädigen. Die Software ist mit MS SQL Server 2019, 2017, 2016, 2014, 2012, 2008, 2008 R2 und älteren Versionen kompatibel. |
Mögliche Ursachen für eine Beschädigung der MDF-Datei
Im Folgenden finden Sie einige häufige Gründe, die zu einer beschädigten MDF-Datei in SQL Server führen können:
- Plötzlicher Stromausfall
- Bugs im Server selbst
- Fehlerhaftes Betriebssystem
- Unerwartetes (abruptes) Herunterfahren des Systems
- Hardware-Probleme, Virenausbrüche, usw.
- Datei auf einem beschädigten externen Speichermedium gespeichert
Wie kann ich MDF-Dateien reparieren?
Microsoft SQL Server bietet einen eingebauten Datenbankkonsolenbefehl CHECKDB (DBCC CHECKDB), mit dem Sie die physische und logische Integrität von db-Objekten testen können, indem Sie die folgenden Operationen nacheinander ausführen:
- Führen Sie den Befehl DBCC CHECKALLOC in der Datenbank aus.
- Führen Sie den Befehl DBCC CHECKCATALOG in der Datenbank aus.
- Führen Sie DBCC CHECKTABLE für jeden View und jede Tabelle in der Datenbank aus.
- Authentifizierung des Inhalts jeder in der Datenbank verfügbaren indizierten Ansicht.
- Authentifizierung der Link-Level-Konstanz zwischen Tabellenmetadaten, Dateisystemverzeichnissen und Dateien bei der Speicherung von VARBINARY (max)-Daten mit FILESTREAM im Dateisystem.
- Authentifizierung der Service Broker-Daten in der Datenbank.
Hinweis: Weitere Informationen finden Sie in der Beschreibung der oben genannten DBCC-Befehle. |
DBCC CHECKDB prüft die Konsistenz von db pages und andere strukturelle Prüfungen. Anschließend meldet es alle Fehler.
Wenn DBCC CHECKDB Konsistenzfehler in der Datenbank meldet, versuchen Sie, die Datenbank von einer bekanntermaßen guten Sicherungskopie wiederherzustellen. Wenn die Sicherungskopie jedoch nicht verfügbar ist oder nicht die aktuellste ist, bietet CHECKDB mehrere Reparaturoptionen, um eine beschädigte MDF-Datei in SQL Server zu reparieren.
Lesen Sie dies: SQL-Datenbank mit dem Befehl DBCC CHECKDB reparieren |
Die Reparaturmöglichkeiten sind wie folgt:
- REPAIR_FAST – Die Syntax wird nur aus Gründen der Abwärtskompatibilität beibehalten; sie hilft nicht bei der Durchführung von Reparaturaktionen. Die Syntax für diese Reparaturoption lautet:
DBCC CHECKDB (‘DB-Name’, REPAIR_FAST)
- REPAIR_REBUILD – Diese Reparaturoption führt einen Reparaturvorgang ohne das Risiko eines Datenverlusts durch. Damit können Sie schnelle Reparaturen durchführen, z.B. fehlende Zeilen in nicht geclusterten Indizes reparieren, und sogar zeitaufwändige Reparaturen, z.B. den Wiederaufbau von Indizes. Die Syntax lautet:
DBCC CHECKDB (‘DB-Name’, REPAIR_REBUILD)
Hinweis: Diese Funktion (REPAIR_REBUILD) behebt keine Fehler, die FILESTREAM-Daten enthalten. |
- REPAIR_ALLOW_DATA_LOSS – Microsoft empfiehlt, diese Reparaturoption als letztes Mittel zur Behebung aller Fehler zu verwenden. Denn selbst wenn die Option Fehler wie die Freigabe einer Seite oder Zeile usw. repariert, kann dies zu Datenverlusten führen. Die Syntax lautet:
DBCC CHECKDB (‘DB Name’, REPAIR_ALLOW_DATA_LOSS)
Hinweis: Als Alternative zu DBCC CHECKDB können Sie die Option ‘Repair_Allow_Data_Loss‘ verwenden, um die beschädigte MDF-Datei ohne Datenverlust zu reparieren. |
Was Sie bei der Verwendung der DBCC CHECKDB-Reparaturoptionen beachten sollten
Wenn Sie die DBCC CHECKDB-Reparaturoptionen verwenden, beachten Sie die folgenden Anforderungen:
- Die erste und wichtigste Voraussetzung ist, dass sich die betreffende Datenbank im Einzelbenutzermodus befindet, um einen der drei Reparaturbefehle ausführen zu können. Wenn ein Benutzer die Datenbank nicht in den Einzelbenutzermodus versetzt, erscheint die folgende Fehlermeldung:
“Die Reparaturanweisung wird nicht verarbeitet. Die Datenbank muss sich im Einzelbenutzermodus befinden.
DBCC-Ausführung abgeschlossen. Wenn DBCC Fehlermeldungen ausgegeben hat, wenden Sie sich an Ihren Systemadministrator.”
Sie können die SQL DB mit dem folgenden Befehl in den Einzelbenutzermodus versetzen:
ALTER DATABASE Datenbankname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
- Zweitens müssen Sie die Syntax verwenden, um die DBCC CHECKDB-Reparaturbefehle korrekt auszuführen. Nur dann werden die Unstimmigkeiten korrigiert und Sie erhalten eine gesunde Datenbankdatei.
- Die DBCC-Reparaturanweisungen sind für speicheroptimierte Tabellen nicht gültig. In solchen Fällen, d.h. bei Integritätsproblemen in einer speicheroptimierten Tabelle, müssen Sie das Backup wiederherstellen, um Zugriff auf die Daten in der db-Datei zu erhalten, vorausgesetzt, die Backup-Datei ist nicht beschädigt.
Das DBCC CHECKDB Repair Tool ist fehlgeschlagen! Was nun?
Wenn das integrierte DBCC CHECKDB die SQL db-Datei nicht reparieren kann, können Sie als nächstes eine spezialisierte SQL-Reparatursoftware wie Stellar Repair for MS SQL ausführen. Die Software hilft Ihnen, die MDF-Datei zu reparieren und die darin gespeicherten Daten zu extrahieren, ohne dass Sie viel Zeit und Mühe in das Schreiben von komplexem Code investieren müssen.
Diese SQL-Reparatursoftware hilft dabei, die Datenbank auf fehlerhafte Einträge zu überprüfen, Bitmuster zu korrigieren und die Datenbank in einen konsistenten Zustand zu bringen.
Hauptmerkmale der Stellar Repair for MS SQL Software
- Repariert beschädigte MDF- und NDF-Dateien
- Stellt alle Datenbankkomponenten wieder her, wie z.B. Tabellen, Schlüssel, Trigger, gespeicherte Prozeduren usw.
- Unterstützt die Wiederherstellung von gelöschten Datensätzen aus der SQL Server-Datenbank
- Zeigt eine Vorschau der wiederherstellbaren Datenbankobjekte
- Bietet mehrere Optionen zum Speichern reparierter SQL DB-Dateien in den Formaten MS SQL, XLS, CSV und HTML.
Fazit
Wenn eine MDF-Datei beschädigt wird, besteht die einzige Sorge der System- oder Datenbankadministratoren (DBAs) darin, sicherzustellen, dass der Zugriff auf die Datenbank möglich ist und dass alle Daten in ihrem ursprünglichen, intakten Zustand wiederhergestellt werden.
Sie können die Datenbankdatei einfach aus der letzten Sicherungskopie wiederherstellen, aber wenn diese nicht verfügbar oder beschädigt ist, kann die Ausführung von DBCC CHECKDB mit Reparaturoptionen helfen. Wenn keine der Reparaturoptionen für Sie funktioniert oder Sie nicht riskieren wollen, dass Daten aufgrund der Option REPAIR_ALLOW_Data_LOSS verloren gehen, ist die Verwendung der Stellar Repair for MS SQL Software der beste Weg, um eine beschädigte SQL Server-Datenbank-MDF-Datei zu reparieren. Sie kann bei der Reparatur von Datenbankdateien (.mdf und .ndf) helfen, wenn die DBCC CHECKDB Reparatur fehlschlägt.