Defekte Rechner, Festplattencrashs, beschädigte Datenbankdateien, irrtümlich gelöschte Daten – Gründe, um auf eine Datenbanksicherung zurückzugreifen, gibt es mehr, als einem lieb ist. In einem solchen Moment heißt es in erster Linie “Ruhe bewahren – Sicherheit ausstrahlen” und um die Möglichkeiten wissen, die der Microsoft SQL Server für die Wiederherstellung einer Datenbanksicherung bietet.
Der Umfang einer Wiederherstellung kann unterschiedlich sein. In einigen Fällen mag es ausreichen, lediglich die beschädigten Datenbankdateien wieder herzustellen, während in anderen Fällen zunächst ein neuer Server aufgesetzt werden muss, da der alte den Geist aufgegeben hat, bevor der eigentliche Prozess der Wiederherstellung gestartet werden kann.
Egal, welche Ausmaße eine Wiederherstellung annimmt – früher oder später kommen Sie an den Punkt, dass aus der Sicherungsdatei eine Datenbank erstellt werden muss.
Der Microsoft SQL Server bietet dafür einige Möglichkeiten, die über die einfache Rekonstruktion einer Datenbank hinausgehen. Sie können beispielsweise die Datenbank nur bis zu einem bestimmten Zeitpunkt wiederherstellen, um dadurch eine fehlerhafte Eingabe wieder ungeschehen zu machen, oder aber Sie “zweckentfremden” die Sicherungsdateien als Installationsdateien.
Letzteres wird das erste Szenario dieses Artikels sein, denn die der Heft-CD beiliegende Datenbanksicherung soll auf einem anderen Server – im besten Fall auf Ihrem PC – installiert werden.
Installation einer Datenbank durch
Wiederherstellung
Die Sicherungsdatei enthält die Voll-, differenziellen und Transaktionsprotokollsicherungen der RestoreDB-Datenbank. Sie können diese Datenbank gefahrlos auf Ihrem Rechner installieren, denn es handelt sich dabei um die Ihnen bestimmt bekannte Nordwind-Datenbank.
Kopieren Sie die Sicherungsdatei RestoreDB.bak auf Ihren Rechner und starten Sie das SQL Server Management Studio Express (SSMSE). Dort öffnen Sie den Dialog Datenbank wiederherstellen mit dem gleichnamigen Befehl aus dem Kontextmenü des Eintrags Datenbanken.
Im Listenfeld In Datenbank tragen Sie den Namen RestoreDB ein. Unter diesem Namen wird die Datenbank bei der Wiederherstellung angelegt. Anschließend wählen Sie in der Gruppe Quelle für die Wiederherstellung die Option Von Medium, da die Wiederherstellung über eine Sicherungsdatei erfolgen soll. Diese bestimmen Sie im Dialog Sicherung angeben, den Sie mit der zur Option gehörenden Schaltfläche starten. Dort wird zunächst das Sicherungsmedium definiert, in diesem Fall das Medium Datei, und anschließend der Sicherungsspeicherort, also die Sicherungsdatei RestoreDB.bak, über die Schaltfläche Hinzufügen ausgewählt. Eine Datenbanksicherung kann auf mehrere Sicherungsdateien verteilt sein. Die einzelnen Dateien können Sie an dieser Stelle alle nach und nach hinzufügen. Nachdem Sie nun die Sicherungsdatei RestoreDB.bak zugeordnet haben, bestätigen Sie diese Auswahl mit OK.
Die einzelnen Sicherungssätze der Sicherungsdatei werden nun eingelesen und im Dialog Datenbank wiederherstellen in der Gruppe Wählen Sie die wiederherzustellenden Sicherungssätze aus angezeigt (siehe Bild 1).

Bild 1: Auswahl der letzten Sicherungssätze
Systemdatenbanken |
Wenn nun schon von den Systemdatenbanken die Rede ist, soll eine kurze Aufstellung über die Bedeutung und den Inhalt der einzelnen Datenbanken nicht fehlen: master: Die master-Datenbank enthält Informationen einer SQL Server-Installation, wie die einzelnen Datenbanken, Anmeldekonten, Verbindungsserver oder Systemkonfigurationen. model: Die model-Datenbank ist die Vorlage, mit der neue Datenbanken erstellt werden. Sofern Sie in Ihren Datenbanken immer gleiche Objekte wie Tabellen, Stored Procedures, Views oder Datenbankbenutzer, Regeln sowie eigene Datentypen verwenden, können Sie diese in der model-Datenbank anlegen. msdb: Die msdb-Datenbank enthält Informationen über die Aktionen beziehungsweise Wartung einer SQL Server-Installation. Dazu gehören neben der Backup-Historie auch die Wartungspläne, die Aufträge des SQL Server Agenten und die DTS- beziehungsweise SSIS-Pakete und mehr. tempdb: Die tempdb-Datenbank dient der Auslagerung von temporären Zwischenergebnissen. Hier werden u. a. die temporären Tabellen für die Dauer ihrer Verwendung gespeichert. Die tempdb wird beim Beenden des SQL Servers gelöscht und bei einem Neustart wieder erzeugt. |
Diese beinhaltet mehrere Vollsicherungen, mehrere differenzielle Sicherungen und mehrere Transaktionsprotokollsicherungen.
Um die Datenbank mit den aktuellsten Daten der Sicherung wiederherzustellen, wählen Sie die letzte Vollsicherung, die letzte differenzielle Sicherung und alle der letzten differenziellen Sicherung folgenden Transaktionsprotokollsicherungen aus. Die Transaktionsprotokollsicherungen zwischen der Voll- und der differenziellen Sicherung müssen nicht markiert werden, da die dort gespeicherten änderungen auch in der differenziellen Sicherung enthalten sind.
Bevor Sie nun zur Seite Optionen wechseln, noch ein Wort zur Option Aus Datenbank. Sofern die Datenbank dem SQL Server bekannt ist, kann sie anhand ihrer Sicherungshistorie wiederhergestellt werden. Nach Auswahl einer Datenbank aus dem zur Option gehörenden Listenfeld werden die Sicherungssätze im unteren Teil des Dialogs angezeigt.
Die Historien der Datenbanksicherungen werden in der Systemdatenbank msdb gespeichert. Insofern macht es durchaus Sinn, auch die Systemdatenbanken regelmäßig zu sichern, damit solche Informationen auch nach einem Crash zur Verfügung stehen.
Nun kennt Ihr SQL Server weder die Datenbank RestoreDB noch die bisher ausgeführten Sicherungen dieser Datenbank. Und da deswegen keine Sicherungshistorie existiert, bleibt nur die Wiederherstellung mit der Sicherungsdatei.
Auf der Seite Optionen können Sie nun für die Wiederherstellung der Datenbank noch einige nicht zwingende, aber in manchen Fällen notwendige Optionen konfigurieren. Eine für dieses Beispiel notwendige Option ist die Angabe des Speicherorts der wiederhergestellten Datenbankdateien. Die Originalspeicherorte sind in den Sicherungssätzen gespeichert und werden in der Gruppe Datenbankdateien wiederherstellen als angezeigt. Die Pfade der Datenbankdateien sollten Sie Ihrer Umgebung anpassen, um die Datenbankdateien in den Verzeichnissen erstellen zu lassen, in denen Sie Ihre Datenbanken speichern. Existiert der angegebene Pfad nicht, wird die Wiederherstellung mit einem Fehler abgebrochen.
Sollten Sie wider Erwarten bereits eine Datenbank mit dem Namen RestoreDB auf Ihrem SQL Server haben, müssen Sie die Option Vorhandene Datenbank überschreiben aktivieren, damit die bereits bestehende Datenbank vor der Wiederherstellung der Sicherungsdatei gelöscht wird.
Sofern die Sicherungsdatei eine in einer Replikation veröffentlichte Datenbank enthält, können die Replikationseinstellungen der Datenbank bei der Wiederherstellung beibehalten werden. Dazu muss die Option Replikationseinstellungen beibehalten aktiviert sein, da sonst die Einstellungen verloren gehen.
Mit der Option Zugriff auf die wiederhergestellte Datenbank einschränken wird der Zugriff auf Benutzer der Rollen sysadmin, db_owner und dbcreator begrenzt. Bei einem guten Berechtigungssystem wird dadurch verhindert, dass jeder beliebige Benutzer mit dieser neuen Datenbank arbeiten kann.
Die letzte noch nicht beschriebene Wiederherstellungsoption Bestätigung vor Wiederherstellen jeder einzelnen Sicherung verlangt von Ihnen für jeden einzelnen Sicherungssatz eine Bestätigung. Mit dieser Option erhalten Sie Gelegenheit, das Medium Ihrer Sicherungsdateien zu wechseln, sofern Sie die Sicherungsdateien auf verschiedene Medien verteilt, aber nur ein Lesegerät haben.
Wozu die Optionen in der Gruppe Wiederherstellungsstatus (siehe Bild 2) benötigt werden, erfahren Sie weiter unten.

Bild 2: Optionen der Wiederherstellung
Für die Installation der Datenbank RestoreDB müssen Sie nur die Pfade der Datenbankdateien an Ihre Umgebung anpassen. Die Wiederherstellung starten Sie mit einem Klick auf OK.
Die Datenbank wird nun anhand der Vollsicherung erstellt. Danach werden die änderungen in der Datenbank wiederhergestellt, die in der differenziellen Sicherung gespeichert sind. Abschließend werden die einzelnen Transaktionsprotokolle verarbeitet. Dabei werden alle abgeschlossenen Transaktionen auf der Datenbank ausgeführt, dieser Schritt wird als Rollforward bezeichnet, und alle nicht abgeschlossenen Transaktionen werden wieder rückgängig gemacht – es wird ein Rollback ausgeführt.