Ressourcendatenbank

Frage: Wer sichert eigentlich seine Ressourcendatenbank?

Anwort: Das sollte eigentlich jeder machen. Zwar nicht unbedingt täglich, aber zumindest nach jedem Upgrade oder Hotfix.

Wofür brauche ich diese Datenbank?

Auch wenn sie im Objekt-Explorer nicht auftaucht, ist sie doch ein wesentlicher Bestandteil des SQL Servers. Ohne sie startet oder arbeitet der SQL Server nicht mehr richtig. Eingeführt und dokumentiert wurde sie mit SQL Server 2005.

Wer den Mut hat ein bisschen mit dieser DB herzumzuspielen, bekommt hier einige Tipps dazu.

Dieser englische Artikel beschäftigt sich ebenfalls mit den Auswirkungen der "Resource DB".

Ich habe doch eine tägliche Filesicherung des Servers!

Wer seine File-Sicherung so eingestellt hat, dass sie keine mdf und ldf Dateien sichert, da die geöffneten Datenbanken sowieso nicht gesichert werden können, bekommt niemals eine Sicherung dieser zwei Dateien:

  • mssqlsystemresource.mdf
  • mssqlsystemresource.ldf

Was kann denn passieren?

Bei uns waren z. B. einige Jobs mit merkwürdigen Fehlermeldungen abgebrochen worden:

Could not continue scan with NOLOCK due to data movement. [SQLSTATE 42000] (Error 601).  The step failed.

Die Ursache war eine korrupte Ressourcendatenbank, was durch die regelmässige Konsistenzprüfung der Systemdatenbanken aufgedeckt wurde:

CHECKDB found 0 allocation errors and 11 consistency errors in database 'mssqlsystemresource'.

Lösungsmöglichkeit

Man sichert sich regelmässig (einmal pro Woche reicht) diese beiden Dateien in ein anderes Verzeichnis auf dem Server und möglichst auch auf Band. Dies kann man z. B. mit einem Job im SQL Server Agent ausführen, der einen Step vom Typ "Betriebssystem (CmdExec) ausführt:

copy "C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\mssqlsystemresource.*" "D:\MSSQL10.MSSQLSERVER\MSSQL\Backup\System\*.*.bak" /Y

Im Fehlerfall kann man dann auf eine Sicherung zurückgreifen, die zu der Version der installierten Software passt.