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.


Screenshot Datenbank fehlerverdächtig


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)


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 ermitteln Sie die fehlerverdächtige Datenbank(en) auf dem Server:

 

 

  1. SELECT DBName=NAME, [Status]=state_desc  
  2. FROM master.sys.databases  
  3. WHERE state_desc='SUSPECT'  


Im nächsten Schritt setzen Sie bringen Sie die Datenbank in den Notfallmodus, setzen dann Zugriff auf EInzelbenutzermodus und führen ein Prüfung der Datenbank durch:

 

  1. USE master;  
  2. GO  
  3.   
  4. ALTER DATABASE [DATABASENAME] SET EMERGENCY  
  5. GO  
  6.   
  7. ALTER DATABASE [DATABASENAME] SET SINGLE_USER  
  8. GO  
  9.   
  10. DBCC CHECKDB ([DATABASENAME], REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;  
  11. GO  


Anschließend wird nochmals eine Prüfung der Datenbank durchgeführt:

 

  1. USE [DATABASENAME]  
  2. GO  
  3.   
  4. DBCC CHECKDB WITH NO_INFOMSGS;  
  5. 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:



  1. USE master;  
  2. GO  
  3.   
  4. ALTER DATABASE [DATABASENAME] SET MULTI_USER   
  5. GO  

 

Anschließend sollte umgehend eine Sicherung der reparierten Datenbank erfolgen.