Wie repariert man eine SQL-Datenbank mit dem DBCC CHECKDB-Befehl?
Zusammenfassung: Der Datenbank-Konsolenbefehl (DBCC) CHECKDB wird von vielen SQL Server-Datenbankadministratoren (DBAs) häufig verwendet, um Fehler in der Datenbank zu identifizieren. Außerdem verfügt DBCC CHECKDB über drei Reparaturoptionen, um datenbankbezogene Fehler zu beheben. In diesem Artikel wird beschrieben, wie Sie DBCC CHECKDB verwenden können, um SQL-Datenbanken zu reparieren. Außerdem wird eine spezielle MS SQL-Reparatursoftware vorgestellt, die Sie verwenden können, wenn DBCC CHECKDB die Datenbank nicht reparieren kann.
Als Datenbankadministratoren (DBAs) wissen wir alle, wie wichtig es ist, den “Database Console Command (DBCC) CHECKDB” regelmäßig auszuführen, um die physische und logische Integrität von Datenbankobjekten, Indexbeziehungen und andere strukturelle Checks zu überprüfen. Wenn eine dieser Prüfungen fehlschlägt, werden Konsistenzfehler im Rahmen des Datenbankkonsolenbefehls gemeldet.
Die beste Methode zur Reparatur von Fehlern in der Datenbank, die von DBCC CHECKDB gemeldet werden, besteht darin, das letzte bekannte gute Backup auszuführen, wie von Microsoft empfohlen. Wenn die Sicherung jedoch nicht verfügbar ist (oder die Sicherung beschädigt ist), können Sie versuchen, auf die Datenbank im Notzustand zuzugreifen. Der Status Emergency ermöglicht den Zugriff auf eine Datenbank, die sich im Modus Suspect befindet. Er ermöglicht auch die Ausführung von DBCC CHECKDB-Reparaturoptionen, um die Datenbankbeschädigung zu beheben.
Wie verwendet man DBCC CHECKDB zum Reparieren der SQL-Datenbank?
Laden Sie das ‘SQL Server Management Studio (SSMS)’ herunter, installieren Sie es und folgen Sie diesen Schritten, um die SQL-Datenbank mit DBCC CHECKDB zu reparieren:
HINWEIS: In den unten genannten Schritten verwenden wir database_name als Dbtesting. Stellen Sie sicher, dass Sie DBtesting durch den Namen Ihrer Datenbank ersetzen.
Schritt 1: Versetzen der Datenbank in den Notfallmodus
Ändern Sie den Datenbankstatus in den EMERGENCY-Modus, der dem Administrator einen Nur-Lese-Zugriff ermöglicht. Um die Datenbank in den EMERGENCY-Modus zu versetzen, führen Sie folgende Abfrage in SSMS aus:
ALTER DATABASE [Dbtesting] SET EMERGENCY
Schritt 2: Prüfen auf Korruptionsfehler
Sobald der Administrator auf die Datenbank zugreifen kann, führen Sie den folgenden DBCC CHECKDB-Befehl aus, um Korruptionsfehler in der Datenbank zu analysieren:
DBCC CHECKDB (Dbtesting)
Wenn DBCC CHECKDB Fehler in der Datenbank entdeckt, empfiehlt es geeignete Reparaturoptionen, um das Problem zu beheben.
Schritt 3: SQL-Server-Datenbank in den Einzelbenutzermodus versetzen
Bevor Sie die DBCC CHECKDB-Reparaturoptionen verwenden, setzen Sie die beschädigte Datenbank in den Einzelbenutzermodus, um zu verhindern, dass andere Benutzer die Daten während des Reparaturvorgangs ändern. Gehen Sie folgendermaßen vor, um den SQL-Datenbankmodus auf SINGLE_USER zu setzen:
Methode 1: Verwendung der grafischen Benutzeroberfläche (GUI)
- Klicken Sie mit der rechten Maustaste auf die Datenbank, die Sie reparieren möchten, und dann auf Eigenschaften
- Klicken Sie im Fenster Datenbankeigenschaften auf Optionen.
- Klicken Sie auf das Dropdown-Feld Zugriff einschränken unter der Registerkarte Status, wählen Sie die Option SINGLE_USER und klicken Sie dann auf OK.
Methode 2: Verwendung von Transact-SQL (T-SQL)-Befehlen
Sie können die Datenbank auch in den SINGLE_USER-Modus versetzen, indem Sie die folgende T-SQL-Abfrage in SSMS ausführen:
ALTER DATABASE Dbtesting SET SINGLE_USER
Schritt 4: Reparieren der Datenbank
Sobald Sie den Datenbankmodus auf SINGLE_USER geändert haben, führen Sie DBCC CHECKDB mit der Reparaturoption REPAIR_ALLOW_DATA_LOSS aus, um die SQL Server-Datenbank zu reparieren:
HINWEISE:
- Neben dem Reparaturmodus REPAIR_ALLOW_DATA_LOSS bietet DBCC noch zwei weitere Reparaturmodi:
- REPAIR_FAST: Diese Reparaturoption führt keine Reparaturaktionen durch. Sie hilft, die Syntax für die Abwärtskompatibilität zu erhalten.
- REPAIR_REBUILD: Die Option REPAIR_REBUILD hilft bei der Reparatur der Datenbank ohne Datenverlust. Sie kann verwendet werden, um fehlende Zeilen in nicht geclusterten Indizes zu reparieren und um einen Index neu aufzubauen.
- Die Reparaturoption REPAIR_ALLOW_DATA_LOSS hilft zwar bei der Reparatur aller gemeldeten Fehler in der SQL-Server-Datenbank, ist aber nicht die beste Option für die Reparatur von Datenbankbeschädigungen. Diese Reparaturoption verursacht Datenverluste. Tatsächlich empfiehlt Microsoft die Verwendung der Option REPAIR_ALLOW_DATA_LOSS als letzten Ausweg, wenn Sie eine Datenbank nicht aus dem Backup wiederherstellen können. Wenn Sie keine Sicherung haben und keinen Datenverlust riskieren können, verwenden Sie eine spezialisierte MS SQL-Reparatur software, um die Datenbank ohne Verlust der Datenbankintegrität zu reparieren.
DBCC CHECKDB (N 'Dbtesting', REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS;
GO
Schritt 5: Datenbank wieder in den MULTI_USER-Modus versetzen
Nachdem Sie die Datenbank erfolgreich repariert haben, setzen Sie die Datenbank in den MULTI_USER-Modus, indem Sie den folgenden Befehl ausführen:
ALTER DATABASE Dbtesting SET MULTI_USER
Was können Sie noch tun, wenn DBCC CHECKDB fehlschlägt?
Das Ausführen des DBCC CHECKDB-Befehls REPAIR_ALLOW_DATA_LOSS kann das Löschen einiger Datenbankseiten erfordern, was zu Datenverlusten führt. Außerdem können DBCC CHECKDB-Befehle fehlschlagen und einen Fehler zurückgeben, wenn es sich um stark beschädigte SQL-Datenbankdateien handelt.
Verwenden Sie Stellar Repair for MS SQL Software, um schwer beschädigte MS SQL-Datenbank zu reparieren und alle ihre Komponenten wiederherzustellen, wobei die Datenbankintegrität erhalten bleibt. Die SQL-Wiederherstellungssoftware hilft, den Zugriff auf die Datenbank mit minimalem manuellem Aufwand und Zeitaufwand wiederherzustellen.
Hauptmerkmale:
- Repariert sowohl MDF- als auch NDF-Datenbankdateien
- Stellt alle Datenbankkomponenten wieder her, einschließlich Tabellen, Schlüssel, Indizes, gespeicherte Prozeduren, etc.
- Ermöglicht Wiederherstellung von gelöschten Datensätzen
- Wiederherstellung von SQL-Tabellen mit PAGE- und ROW-Kompression
- Unterstützt die selektive Wiederherstellung von Datenbankobjekten
- Vorschau der wiederherstellbaren Datenbankobjekte
- Verfügbar für Windows und Linux OS
Um den kompletten Arbeitsprozessder Software kennenzulernen, schauen Sie sich das Video an
Fazit
DBCC CHECKDB kann helfen, Konsistenzfehler und Korruption in MS SQL-Datenbanken zu überprüfen. Eine beschädigte Datenbank kann zu unnötigen Ausfallzeiten und Datenverlusten führen. Um datenbankbezogene Fehler zu beheben, stellen Sie die Datenbank aus dem letzten Backup wieder her.
Wenn die aktuelle Datenbanksicherung nicht existiert oder die Sicherung selbst beschädigt ist, können Sie die Reparaturoption DBCC CHECKDB ‘REPAIR_ALLOW_DATA_LOSS’ verwenden, um die Datenbank zu reparieren. Diese Reparaturoption birgt jedoch das Risiko eines Datenverlusts. Außerdem könnte DBCC CHECKDB das Problem nicht beheben.
Verwenden Sie Stellar Repair for MS SQL, um die MS SQL-Datenbank zu reparieren und alle ihre Komponenten mit Präzision wiederherzustellen, wobei die Datenbankstruktur und die Integrität der Datenbankobjekte erhalten bleiben.