Wiederherstellung von SQL Server-Datenbanken

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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).

pic001.TIF

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.

pic002.TIF

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.

Nach Abschluss der einzelnen Vorgänge erhalten Sie eine Erfolgsmeldung und schon sind Sie um eine Datenbank – die RestoreDB – reicher.

Die in diesem Beispiel genutzte Vorgehensweise einer Wiederherstellung kann natürlich nicht nur für die Installation einer Datenbank eingesetzt werden, sondern auch für andere und durchaus alltäglichere Vorhaben.

Datenbanksicherungen testen

Eines dieser alltäglichen Vorhaben könnte das Testen einer Datenbanksicherung sein, denn diese sollten nicht nur regelmäßig erstellt, sondern auch regelmäßig überprüft werden. Das gibt nicht nur die Gewissheit, eine funktionierende Sicherung parat zu haben, sondern schult auch das Verfahren einer Wiederherstellung.

Da Sie die Datenbank nicht über die bestehende Datenbank schreiben sollten, testen Sie die Wiederherstellung entweder auf einer anderen SQL Server-Instanz oder mit einem anderen Datenbanknamen.

Sie gehen also genau wie im vorherigen Beispiel vor, außer dass Sie unter In Datenbank einen anderen Datenbanknamen eintragen – etwa RestoreDBTest (siehe Bild 3) Außerdem müssen Sie auf der Seite Optionen noch Pfad und Dateinamen der beiden Datenbankdateien an den neuen Namen anpassen (siehe Bild 4), da die Datenbank sonst mit den Dateinamen der Originaldatenbank wiederhergestellt wird, was zu einem Fehler führt, da die Dateien in dem angegebenen Verzeichnis bereits existieren.

pic003.TIF

Bild 3: Datenbank unter anderem Namen wiederherstellen

pic004.TIF

Bild 4: ändern von Pfad und Dateinamen

Da die in diesem Fall wiederhergestellte Datenbank nicht für alle Benutzer verfügbar sein soll, ist es durchaus sinnvoll, die Option Zugriff auf wiederhergestellte Datenbanken einschränken zu aktivieren.

Mit einem Klick auf OK wird die Datenbank RestoreDB nun unter dem Namen RestoreDBTest wiederhergestellt.

Die Zugriffsbegrenzung der Datenbank ist im SSMSE durch den Zusatz (Benutzer mit eingeschränktem Zugriff) am Datenbanknamen ersichtlich. Nur Benutzer der Gruppen sysadmin, db_owner und dbcreator sind berechtigt, die Datenbanksicherung zu überprüfen.

Wiederherstellung nach einem Crash

Die Vorgehensweise für die Wiederherstellung einer Datenbank nach einem Crash hängt vom Crash selbst ab und von dem, was danach noch übrig ist.

Wenn sich die Festplatten verabschiedet haben und Sie zunächst einen neuen Server aufsetzen müssen, unterscheidet sich der anschließende Wiederherstellungsvorgang nicht von der im ersten Beispiel beschriebenen Wiederherstellung.

ähnlich verhält es sich mit der Wiederherstellung, wenn der Server zwar noch vorhanden, die Datenbank aber nicht mehr lesbar ist. Wieder sind im Dialog Datenbank wiederherstellen die letzten Sicherungssätze auszuwählen, wobei in diesem Fall neben der Sicherungsdatei auch die Sicherungshistorie verfügbar ist. Wichtig: Das Original der wiederherzustellenden Datenbank existiert noch auf dem SQL Server und muss vor der Wiederherstellung gelöscht werden. Dies übernimmt die Wiederherstellung für Sie, sofern Sie die Option Vorhandene Datenbank überschreiben auf der Seite Optionen aktivieren.

Als Glück im Unglück kann man den Umstand bezeichnen, wenn im Falle eines Crashs noch eine abschließende Transaktionsprotokollsicherung mit der Option Protokollfragment sichern und Datenbank im Wiederherstellungsstatus belassen möglich ist. Dabei wird das Transaktionsprotokoll nur gesichert; die als abgeschlossen gekennzeichneten Transaktionen werden aber nicht gelöscht. Und was nicht gelöscht ist, kann auch wieder hergestellt werden. Insofern ist es mit einer solchen Sicherung möglich, die Datenbank bis zum Zeitpunkt des Crashs wiederherzustellen und den Datenverlust auf ein Minimum zu begrenzen.

Das gesicherte Protokollfragment wird bei der Wiederherstellung wie eine reguläre Transaktionsprotokollsicherung behandelt. Nachdem Sie also im Dialog Datenbank wiederherstellen die Sicherungsdatei geladen haben, sehen Sie neben den Sicherungssätzen der Voll-, differenziellen und Transaktionsprotokollsicherungen als letzten Eintrag auch die Sicherung des Protokollfragments. Den Vorgang für die Wiederherstellung kennen Sie bereits: Sie wählen die letzten Sicherungssätze aus – inklusive der Sicherung des Protokollfragments -, aktivieren je nach Lage die Option Vorhandene Datenbank überschreiben und starten die Wiederherstellung.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar