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.