Inhalt: Dieser Dokumentationsartikel erklärt, wie Du Deine Datenbanken reparieren kannst. THEMENVERZEICHNIS |
Lesezeit: ca. 10 - 30 Minuten |
Einleitung
Wenn im SQL Server eine Datenbank als fehlerverdächtig aufgeführt wird, kann die Datenbank nicht mehr getrennt (detach) werden. Die Ursachen, warum der SQL Server eine Datenbank in den Status fehlerverdächtig setzt, sind vielfältig.
Gründe
Zu den Gründen zählen u.a.:
- Fehlende Zugriffsberechtigung auf die Datenbankressourcen durch das Betriebssystem
- Anti-Virus Software oder Drittanbieter-Software unterbindet den Zugriff
- Korrupte Datenbankdatei
- Hardwarefehler der Festplatte (auch bei virtuellen Umgebungen)
Status der Datenbank zurücksetzen
Bevor der Status der Datenbank durch ein SQL-Script zurückgesetzt wird, sollte die Ursache für den Fehler gefunden sein. Hierzu gehört die Prüfung des Ereignisprotokolls des Betriebssystems und die SQL Server Protokolle.
Mit folgenden Script ermittelst Du die fehlerverdächtige Datenbank(en) auf dem Server:
SELECT DBName=NAME, [Status]=state_desc FROM master.sys.databases WHERE state_desc='SUSPECT'
Im nächsten Schritt setzt Du die Datenbank in den Notfallmodus, setzt dann den Zugriff auf Einzelbenutzermodus und führst eine Prüfung der Datenbank durch:
USE master; GO ALTER DATABASE [DATABASENAME] SET EMERGENCY GO ALTER DATABASE [DATABASENAME] SET SINGLE_USER GO DBCC CHECKDB ([DATABASENAME], REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS; GO
Anschließend wird nochmals eine Prüfung der Datenbank durchgeführt:
USE [DATABASENAME] GO DBCC CHECKDB WITH NO_INFOMSGS; GO
Wenn diese letzte Prüfung fehlerfrei ausgeführt wurde, befindet sich die Datenbank immer noch im Einzelbenutzermodus. Die Modus Umschaltung auf den Mehrfachbenutzermodus wird mit folgendem Script durchgeführt:
USE master; GO ALTER DATABASE [DATABASENAME] SET MULTI_USER GO
Abschluss
Anschließend sollte umgehend eine Sicherung der reparierten Datenbank erfolgen.