Vorgehensweise: Wiederherstellen einer Datenbank an einem neuen Speicherort und unter einem neuen Namen (Transact-SQL)

In diesem Thema erfahren Sie, wie Sie eine vollständige Datenbanksicherung an einem neuen Speicherort und optional unter einem neuen Namen wiederherstellen. Diese Prozedur ermöglicht, eine Datenbank zu verschieben oder eine Kopie einer Datenbank entweder auf der gleichen oder einer anderen Serverinstanz zu erstellen. Informationen zu Überlegungen zum Verschieben einer Datenbank finden Sie unter Kopieren von Datenbanken durch Sichern und Wiederherstellen.

Voraussetzungen und Empfehlungen

  • Zum Wiederherstellen einer verschlüsselten Datenbank muss das Zertifikat oder der asymmetrische Schlüssel verfügbar sein, der zum Verschlüsseln der Datenbank verwendet wurde. Ohne das Zertifikat oder den asymmetrischen Schlüssel kann die Datenbank nicht wiederhergestellt werden. Darum muss das Zertifikat, das zur Verschlüsselung des Verschlüsselungsschlüssels für die Datenbank verwendet wurde, so lange beibehalten werden, wie die Sicherung benötigt wird. Weitere Informationen finden Sie unter SQL Server-Zertifikate und asymmetrische Schlüssel.

  • Aus Sicherheitsgründen empfiehlt es sich nicht, Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen anzufügen oder wiederherzustellen. Solche Datenbanken können bösartigen Code enthalten, der möglicherweise unbeabsichtigten Transact-SQL-Code ausführt oder Fehler verursacht, indem er das Schema oder die physische Datenbankstruktur ändert. Bevor Sie eine Datenbank aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, führen Sie in der Datenbank auf einem Nichtproduktionsserver DBCC CHECKDB aus, und überprüfen Sie auch den Code der Datenbank, z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

Datenbank-Kompatibilitätsgrad nach der Aktualisierung

Der Kompatibilitätsgrad der Datenbanken tempdb, model, msdb und Resource wird nach dem Upgrade auf jeweils 100 gesetzt. Die master-Systemdatenbank behält ihren Kompatibilitätsgrad vor dem Upgrade bei, es sei denn, dieser lag unter 80. War der Kompatibilitätsgrad von master vor dem Upgrade geringer als 80, wird er nach dem Upgrade auf 80 gesetzt.

War der Kompatibilitätsgrad einer Benutzerdatenbank vor dem Upgrade 80 oder 90, wird er nach dem Upgrade beibehalten. War der Kompatibilitätsgrad der aktualisierten Datenbank vor dem Upgrade 70, wird er auf 80 gesetzt, was dem niedrigsten unterstützten Kompatibilitätsgrad in SQL Server 2008 entspricht.

HinweisHinweis

Neue Benutzerdatenbanken erben den Kompatibilitätsgrad der model-Datenbank.

Verfahrensweisen

So stellen Sie eine Datenbank an einem neuen Speicherort und mit neuem Namen wieder her

  1. Legen Sie optional den logischen und den physischen Namen der Dateien in dem Sicherungssatz fest, der die vollständige Datenbanksicherung enthält, die Sie wiederherstellen möchten. Diese Anweisung gibt eine Liste mit Datenbank- und Protokolldateien zurück, die im Sicherungssatz enthalten sind. Die Basissyntax lautet wie folgt:

    RESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number

    HinweisHinweis

    Sie können die backup_set_file_number eines Sicherungssatzes mit der RESTORE HEADERONLY-Anweisung abrufen.

    Diese Anweisung unterstützt auch eine Anzahl an WITH-Optionen. Weitere Informationen finden Sie unter RESTORE FILELISTONLY (Transact-SQL).

  2. Stellen Sie die vollständige Datenbanksicherung mithilfe derRESTORE DATABASE-Anweisung wieder her. Standardmäßig werden Daten und Protokolldateien an ihren ursprünglichen Speicherorten wiederhergestellt. Verwenden Sie zum Verschieben einer Datenbank die Option MOVE, um die einzelnen Datenbankdateien zu verschieben und Konflikte mit vorhandenen Dateien zu vermeiden.

    Die Transact-SQL-Basissyntax für das Wiederherstellen der Datenbank an einem neuen Speicherort und mit neuem Name lautet wie folgt:

    RESTORE DATABASE new_database_name

    FROM backup_device [ ,...n ]

    [ WITH

       {

            [ RECOVERY | NORECOVERY ]

       [ , ] [ FILE ={ backup_set_file_number | @backup_set_file_number } ]

       [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]

       }

    ;

    HinweisHinweis

    Wenn Sie sich auf das Verschieben einer Datenbank auf einen anderen Datenträger vorbereiten, sollten Sie überprüfen, ob dieser über genügend Speicherplatz verfügt und ob möglicherweise Konflikte mit vorhandenen Dateien auftreten können. Dazu müssen Sie unter anderem eine RESTORE VERIFYONLY-Anweisung verwenden, in der die gleichen MOVE-Parameter angegeben sind, die Sie in der RESTORE DATABASE-Anweisung verwenden möchten.

    In der folgenden Tabelle werden Argumente dieser RESTORE-Anweisung im Hinblick auf das Wiederherstellen einer Datenbank an einem neuen Speicherort beschrieben. Weitere Informationen zu diesen Argumenten finden Sie unter RESTORE (Transact-SQL).

    • new_database_name
      Der neue Name der Datenbank.

      HinweisHinweis

      Wenn Sie die Datenbank auf einer anderen Serverinstanz wiederherstellen, können Sie anstelle eines neuen Namens den ursprünglichen Namen weiterverwenden.

    • backup_device [ ,...n ]
      Gibt eine durch Trennzeichen getrennte Liste von 1 bis 64 Sicherungsmedien an, von denen die Datenbanksicherung wiederhergestellt werden soll. Sie können ein physisches Sicherungsmedium angeben oder, sofern definiert, ein entsprechendes logisches Sicherungsmedium. Geben Sie das physische Sicherungsmedium mithilfe der Option DISK oder TAPE an:

      { DISK | TAPE } **=**physical_backup_device_name

      Weitere Informationen finden Sie unter Sicherungsmedien.

    • { RECOVERY | NORECOVERY }
      Wenn die Datenbank das vollständige Wiederherstellungsmodell verwendet, müssen Sie möglicherweise Transaktionsprotokollsicherungen anwenden, nachdem Sie die Datenbank wiederhergestellt haben. Geben Sie in diesem Fall die Option NORECOVERY an.

      Verwenden Sie andernfalls die Standardoption RECOVERY.

    • FILE = { backup_set_file_number | @backup_set_file_number }
      Identifiziert den wiederherzustellenden Sicherungssatz. Wenn backup_set_file_number beispielsweise den Wert 1 besitzt, weist dies auf den ersten Sicherungssatz auf dem Sicherungsmedium hin. Wenn backup_set_file_number den Wert 2 besitzt, entspricht dies dem zweiten Sicherungssatz. Sie können die backup_set_file_number eines Sicherungssatzes mit der RESTORE HEADERONLY-Anweisung abrufen.

      Wenn diese Option nicht angegeben ist, wird in der Standardeinstellung der erste Sicherungssatz auf dem Sicherungsmedium verwendet.

      Weitere Informationen finden Sie unter RESTORE-Argumente (Transact-SQL) im Abschnitt "Angeben eines Sicherungssatzes".

    • MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
      Gibt an, dass die von logical_file_name_in_backup angegebenen Daten oder die Protokolldatei an dem von operating_system_file_name angegebenen Speicherort wiederhergestellt werden sollen. Geben Sie für jede logische Datei, die aus dem Sicherungssatz an einem neuen Speicherort wiederhergestellt werden soll, eine MOVE-Anweisung an.

      Option

      Beschreibung

      logical_file_name_in_backup

      Gibt den logischen Namen einer Daten- oder Protokolldatei an, die in den Sicherungssatz eingeschlossen werden soll. Der logische Dateiname einer Daten- oder Protokolldatei in einem Sicherungssatz entspricht ihrem logischen Namen in der Datenbank zum Zeitpunkt der Erstellung des Sicherungssatzes.

      HinweisHinweis
      Mit RESTORE FILELISTONLY können Sie eine Liste abrufen, in der die logischen Dateien eines Sicherungssatzes aufgeführt sind.

      operating_system_file_name

      Gibt einen neuen Speicherort für die von logical_file_name_in_backup angegebene Datei an. Die Datei wird an diesem Speicherort wiederhergestellt.

      Optional gibt operating_system_file_name einen neuen Dateinamen für die wiederhergestellte Datei an. Dies ist erforderlich, wenn Sie eine Kopie einer vorhandenen Datenbank auf der gleiche Serverinstanz erstellen.

      n

      Ist ein Platzhalter, der anzeigt, dass Sie weitere MOVE-Anweisungen angeben können.

HinweisHinweis

Nach dem Wiederherstellen einer SQL Server 2005-Datenbank oder einer SQL Server 2000-Datenbank für SQL Server 2008 ist diese sofort verfügbar und wird automatisch aktualisiert. In der Datenbank enthaltene Volltextindizes werden bei der Aktualisierung je nach der Einstellung der Servereigenschaft upgrade_optionimportiert, zurückgesetzt oder neu erstellt. Wenn die Aktualisierungsoption auf Importieren (upgrade_option = 2) oder Neuerstellen (upgrade_option = 0) festgelegt ist, sind die Volltextindizes während der Aktualisierung nicht verfügbar. Je nach Menge der indizierten Daten kann der Importvorgang mehrere Stunden dauern; die Neuerstellung sogar bis zu zehnmal länger. Wenn die Aktualisierungsoption auf Importieren festgelegt ist und kein Volltextkatalog verfügbar ist, werden die zugehörigen Volltextindizes neu erstellt. Um die Einstellung der Servereigenschaft upgrade_option zu ändern, verwenden Sie sp_fulltext_service.

Beispiel

Beschreibung

In diesem Beispiel wird die neue MyAdvWorks-Datenbank erstellt. MyAdvWorks ist eine Kopie der vorhandenen AdventureWorks2008R2-Datenbank, die zwei Dateien beinhaltet: AdventureWorks2008R2_Data und AdventureWorks2008R2_Log. Für diese Datenbank wird das einfache Wiederherstellungsmodell verwendet. Die AdventureWorks2008R2-Datenbank ist bereits auf der Serverinstanz vorhanden, sodass die Dateien in der Sicherung an einem neuen Speicherort wiederhergestellt werden müssen. Die RESTORE FILELISTONLY-Anweisung wird verwendet, um die Anzahl und die Namen der Dateien der Datenbank zu ermitteln, die wiederhergestellt werden. Die Datenbanksicherung ist der erste Sicherungssatz auf dem Sicherungsmedium.

HinweisHinweis

Ein Beispiel für das Erstellen einer vollständigen Sicherung der AdventureWorks2008R2-Datenbank finden Sie unter Vorgehensweise: Erstellen einer vollständigen Datenbanksicherung (Transact-SQL).

HinweisHinweis

In den Beispielen zum Sichern und Wiederherstellen des Transaktionsprotokolls (einschließlich der Zeitpunktwiederherstellungen) wird, wie im folgenden MyAdvWorks-Beispiel, die aus AdventureWorks2008R2 erstellte MyAdvWorks_FullRM-Datenbank verwendet. Die resultierende MyAdvWorks_FullRM-Datenbank muss jedoch geändert werden, damit das Modell der vollständigen Wiederherstellung verwendet werden kann: ALTER DATABASE MyAdvWorks_FullRM SET RECOVERY FULL.

Code

USE master
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2008R2_Backup is the name of the backup device.
RESTORE FILELISTONLY
   FROM AdventureWorks2008R2_Backup
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
   FROM AdventureWorks2008R2_Backup
   WITH RECOVERY,
   MOVE 'AdventureWorks2008R2_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf', 
   MOVE 'AdventureWorks2008R2_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf'
GO