SQL Server-Datenbanken kopieren

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

Für die Beispiele der Beiträge in diesem Heft und in weiteren Ausgaben wollen wir mit Beispieldatenbanken arbeiten, die wir nicht immer komplett neu erstellen, sondern aus einer von mehreren Quellen auf dem Rechner, auf dem Sie die Beispiele ausprobieren, wiederherstellen wollen. Dazu gibt es drei gängige Methoden, die wir in diesem Artikel vorstellen wollen: den Assistenten zum Kopieren von Datenbanken, das Wiederherstellen einer Datenbanksicherung sowie das Wiederherstellen mithilfe eines Skripts. Wir wollen einen Blick auf die letzteren beiden Varianten werfen.

Voraussetzungen

Wenn Sie unsere Beispiele zur Nutzung von Access mit dem SQL Servers als Datenbank-Backend verwenden wollen, benötigen Sie eine Instanz des SQL Servers auf Ihrem System sowie die entsprechende Beispieldatenbank. Die Instanz können Sie sich beispielsweise in Form von LocalDb holen oder als SQL Server Express. Die Verwendung von LocalDb beschreiben wir im Artikel Access und LocalDb (http://www.access-im-unternehmen.de/1057). Außerdem arbeiten wir mit dem SQL Server Management Studio, um den SQL Server und die darin enthaltenen Datenbanken zu verwalten.

Kopieren von Access-Daten

In der Access-Welt war das Kopieren von Daten überhaupt kein Problem. Sie haben einfach die komplette Datenbankanwendung kopiert und auf dem Zielrechner wieder eingefügt. Sofern dort Access installiert ist, können Sie direkt loslegen. Wenn Sie die Daten hingegen in einem Backend speichern, sind neben dem Kopieren des Backends noch ein paar weitere Schritte nötig, um etwa das Frontend erneut mit dem Backend zu verknüpfen. Mit dem SQL Server ist das alles ein wenig komplizierter, denn Sie können nicht einfach eine Datei von A nach B kopieren und dann direkt wieder auf die Daten zugreifen. Stattdessen müssen wir die Datenbank erst auf Rechner A in einer bestimmten Art und Weise sichern und auf Rechner B wiederherstellen.

Für unseren Fall, indem wir nur einfache Beispieldatenbanken aus dem Download des Magazins auf Ihrem Rechner installieren wollen, damit Sie die Beispiele aus den Beiträgen damit ausprobieren können, gibt es zwei einfache Strategien. Die erste ist das Erstellen einer Sicherung auf dem ersten Rechner und das Wiederherstellen aus der Sicherungsdatei auf dem Zielrechner. Die zweite ist, auf dem Quellrechner einfach ein Skript generieren zu lassen, dass die Definition der Tabellen, Felder und Restriktionen sowie die enthaltenen Daten enthält. Dieses können Sie dann auf dem Zielrechner einfach wieder ausführen, um die Datenbank neu zu erstellen.

Sichern und wiederherstellen

Als Erstes schauen wir uns die Variante über die Sicherungs- und Wiederherstellungsfunktion von SQL Server an. Hier öffnen Sie das SQL Server Management Studio und wählen für die zu sichernde Datenbank den Kontextmenü-Eintrag Tasks|Sichern… aus (siehe Bild 1).

Aufrufen des Dialogs zum Sichern einer Datenbank

Bild 1: Aufrufen des Dialogs zum Sichern einer Datenbank

Es erscheint der Dialog Datenbank sichern – , der wie in Bild 2 aussieht. Hier legen Sie einige wichtige Informationen fest:

Dialogs zum Sichern einer Datenbank

Bild 2: Dialogs zum Sichern einer Datenbank

  • Unter Datenbank erscheint die Datenbank, für die Sie den Dialog aufgerufen haben.
  • Sicherungstyp gibt an, ob Sie eine vollständige Sicherung der Datenbank durchführen wollen oder eine differenzielle Sicherung. Letzteres ist für uns aktuell nicht interessant, weil dies für die Sicherung im laufenden Betrieb und die Wiederherstellung nach einem Datenverlust gedacht ist. Wir wollen die Datenbank ja nur von A nach B kopieren. Behalten Sie also den Wert Vollständig bei.
  • Sichern nach: Hier geben Sie an, ob auf einen Datenträger oder zu einer URL gesichert werden soll. Wir wählen Datenträger.

Darunter geben Sie noch an, in welche Datei die Sicherung gespeichert werden soll. SQL Server legt automatisch eine Datei fest, die den Namen der Datenbank sowie die Dateiendung .bak trägt. Die Datei landet im Verzeichnis Backup des SQL Server-Verzeichnisses. Sie können hier einen beliebigen anderen Ordner oder auch einen anderen Dateinamen angeben. Dazu müssen Sie allerdings den vorhandenen Sicherungsort mit der Entfernen-Schaltfläche löschen und mit Hinzufügen… einen neuen Speicherort anlegen. Beim Hinzufügen stellt der SQL Server aber immerhin den zuletzt verwendeten Ordner im Dialog zum Festlegen eines neuen Sicherungsziels ein (siehe Bild 3).

Anlegen eines neuen Ziels für die Sicherung

Bild 3: Anlegen eines neuen Ziels für die Sicherung

Schließlich aktivieren Sie noch die Option Kopiesicherung. Auf diesem Wege stellen Sie sicher, dass eventuell vorhandene geplante Vollsicherungen, differenzielle Sicherungen und Transaktionssicherungen nicht beeinflusst werden.

Die übrigen Einstellungen behalten wir bei, da wir ja nur eine Sicherung für die Weitergabe erstellen wollen und keine, die einen Ausfall des Systems mit Datenverlust kompensieren soll. Klicken Sie nun auf OK, wird die Sicherung direkt ausgeführt. Der erfolgreiche Abschluss der Sicherung wird in der Meldung aus Bild 4 bestätigt.

Erfolgreicher Abschluss einer Sicherung

Bild 4: Erfolgreicher Abschluss einer Sicherung

Damit können wir uns nun der Wiederherstellung der Datenbank etwa auf einem anderen Rechner oder auch einer anderen SQL Server-Instanz widmen. Ich habe an dieser Stelle übrigens festgestellt, dass sich die Sicherung nicht in ein Verzeichnis des Benutzerkontos speichern ließ – mal sehen, ob sich daran etwas ändern lässt.

Vollsicherung per T-SQL

Annähernd alle Aufgaben, die Sie über die Benutzeroberfläche des SQL Server Management Studios erledigen, können Sie auch per T-SQL als Befehl oder Folge von Befehlen ausführen. In diesem Fall handelt es sich um den Befehl BACKUP DATABASE, der für unsere Konfiguration wie folgt aussieht:

BACKUP DATABASE [Suedsturm_SQL]
TO DISK = N''''C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\Suedsturm_SQL.bak''''
WITH NOFORMAT, NOINIT, NAME = N''''Suedsturm_SQL-Vollständig Datenbank Sichern'''', SKIP,
NOREWIND, NOUNLOAD, STATS = 10

Diesen Befehl geben Sie im SQL Server Management Studio in eine neue Abfrage ein, die Sie über den Kontextmenübefehl Neue Abfrage des Eintrags für die jeweilige Datenbank im Objekt-Explorer anlegen. Führen Sie die Abfrage dann aus, erhalten Sie das Ergebnis aus Bild 5.

Sicherung per T-SQL

Bild 5: Sicherung per T-SQL

An dieser Stelle haben wir nun probiert, den Namen der Backupdatei so zu ändern, dass das Backup in ein Unterverzeichnis des Benutzerverzeichnisses kopiert wird, aber auch hier gelingt dies nicht – wir erhalten Fehler 5, Zugriff verweigert. Wir müssen uns also damit begnügen, dass die Sicherungsdatei an einem anderen Ort gespeichert werden muss.

Wiederherstellen aus einer Sicherungsdatei

Damit kommen wir zum zweiten Teil des Kopierens einer Datenbank – der Wiederherstellung. Diese beginnt wieder im Objekt-Explorer des SQL Server Management Studios. Hier wählen Sie für den Eintrag Datenbanken den Kontextmenü-Eintrag Datenbank wiederherstellen… aus (siehe Bild 6).

Start der Wiederherstellung einer Datenbank

Bild 6: Start der Wiederherstellung einer Datenbank

Dies öffnet den Dialog aus Bild 7. Hier wählen wir unter Quelle zunächst die Option Medium aus. Damit können wir dann über die Schaltfläche mit den drei Punkten die Datei auswählen, aus der wir die Sicherung wiederherstellen wollen. Sobald dies geschehen ist, werden die meisten Felder automatisch mit den Informationen aus der Sicherung gefüllt. Da wir uns noch in der gleichen SQL Server-Instanz befinden und nicht die vorhandene Datenbank überschreiben wollen, geben Sie unter Ziel einen anderen Namen für Datenbank: an, hier Suedsturm_SQL_Neu. Mit einem Klick auf die Schaltfläche OK starten wir die Wiederherstellung, die kurz danach durch eine entsprechende Meldung als erfolgreich bestätigt wird.

Wiederherstellen einer Sicherung

Bild 7: Wiederherstellen einer Sicherung

Anschließend finden wir wie in Bild 8 die neue Datenbank unter dem angegebenen Namen im Objekt-Explorer vor.

Die neue Datenbank im Objekt-Explorer

Bild 8: Die neue Datenbank im Objekt-Explorer

Auch diesen Schritt können Sie ganz einfach mit einer T-SQL-Anweisung realisieren. Der dazu benötigte Befehl lautet diesmal:

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