Wiederherstellen einer Datenbank an einem neuen Speicherort (SQL Server)

Gilt für:SQL Server

In diesem Artikel wird beschrieben, wie Sie eine SQL Server-Datenbank an einem neuen Speicherort wiederherstellen und optional die Datenbank in SQL Server mithilfe von SQL Server Management Studio (SSMS) oder Transact-SQL umbenennen. Sie können eine Datenbank in ein neues Verzeichnis verschieben oder eine Kopie einer Datenbank entweder auf der gleichen oder einer anderen Serverinstanz erstellen.

Voraussetzungen

Einschränkungen

  • Nur der Systemadministrator, der eine vollständige Datenbanksicherung wiederherstellt, darf die wiederherzustellende Datenbank aktuell verwenden.

Voraussetzungen

  • Im vollständigen oder im massenprotokollierten Wiederherstellungsmodell muss das Protokoll der aktiven Transaktion gesichert werden, bevor eine Datenbank wiederhergestellt werden kann. Weitere Informationen finden Sie unter Sichern eines Transaktionsprotokolls (SQL Server).

  • Um eine verschlüsselte Datenbank wiederherzustellen, müssen Sie Zugriff auf das Zertifikat oder den asymmetrischen Schlüssel haben, der zum Verschlüsseln der Datenbank verwendet wird! Ohne dieses Zertifikat oder asymmetrischen Schlüssel können Sie die Datenbank nicht wiederherstellen. Sie müssen dieses Zertifikat beibehalten, das zum Verschlüsseln des Datenbankverschlüsselungsschlüssels verwendet wird, solange Sie die Sicherung benötigen. Weitere Informationen finden Sie unter SQL Server Certificates and Asymmetric Keys.

Empfehlungen

  • Weitere Überlegungen zum Verschieben einer Datenbank finden Sie unter "Kopieren von Datenbanken mit Sicherung und Wiederherstellung".

  • Wenn Sie sql Server 2005 (9.x) oder eine höhere Datenbank auf SQL Server wiederherstellen, wird die Datenbank automatisch aktualisiert. In der Regel ist die Datenbank sofort verfügbar. Wenn eine SQL Server 2005 (9.x)-Datenbank aber Volltextindizes aufweist, werden diese je nach der Einstellung der Servereigenschaft upgrade_option beim Upgrade entweder importiert, zurückgesetzt oder neu erstellt. Wenn die Upgradeoption auf „Importieren“ (upgrade_option = 2) oder „Neu erstellen“ (upgrade_option = 0) festgelegt ist, sind die Volltextindizes während des Upgrades nicht verfügbar. Abhängig von der Menge der indizierten Daten kann der Import mehrere Stunden dauern, und die Neuerstellung kann bis zu 10-mal länger dauern. Beachten Sie auch, dass die zugeordneten Volltextindizes neu erstellt werden, wenn die Upgradeoption für den Import festgelegt ist, wenn kein Volltextkatalog verfügbar ist. Verwenden Sie sp_fulltext_service , um die Einstellung der Servereigenschaft upgrade_optionzu ändern.

Sicherheit

Aus Sicherheitsgründen wird empfohlen, Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen nicht anzufügen oder wiederherzustellen. Solche Datenbanken können schädlichen 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 auf einem Nichtproduktionsserver DBCC CHECKDB für die Datenbank aus. Überprüfen Sie außerdem den Code in der Datenbank, z.B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

Berechtigungen

Wenn die wiederhergestellte Datenbank nicht vorhanden ist, muss der Benutzer über CREATE DATABASE-Berechtigungen verfügen, um RESTORE ausführen zu können. Ist die Datenbank vorhanden, werden RESTORE-Berechtigungen standardmäßig den Mitgliedern der festen Serverrollen sysadmin und dbcreator sowie dem Besitzer (dbo) der Datenbank erteilt.

RESTORE-Berechtigungen werden Rollen erteilt, in denen Mitgliedsinformationen immer für den Server verfügbar sind. Da die Mitgliedschaft mit festen Datenbankrollen nur überprüft werden kann, wenn auf die Datenbank zugegriffen werden kann und dies nicht immer der Fall ist, wenn RESTORE ausgeführt wird, verfügen Mitglieder der db_owner festen Datenbankrolle nicht über WIEDERHERSTELLUNGSberechtigungen.

Wiederherstellen einer Datenbank an einem neuen Speicherort; optionales Umbenennen der Datenbank mithilfe von SSMS

  1. Verbinden zur entsprechenden Instanz des SQL Server-Datenbank-Engine, und wählen Sie dann in Objekt-Explorer den Servernamen aus, um die Serverstruktur zu erweitern.

  2. Klicken Sie mit der rechten Maustaste auf Datenbanken, und wählen Sie dann "Datenbank wiederherstellen" aus. Das Dialogfeld Datenbank wiederherstellen wird geöffnet.

  3. Legen Sie Quelle und Speicherort der wiederherzustellenden Sicherungssätze auf der Seite Allgemein mithilfe des Abschnitts Quelle fest. Folgende Optionen stehen zur Auswahl:

    • Datenbank

      Wählen Sie die wiederherzustellende Datenbank aus der Dropdownliste aus. Die Liste enthält nur Datenbanken, die entsprechend dem Sicherungsverlauf von msdb gesichert wurden.

    Hinweis

    Wenn die Sicherung von einem anderen Server abgerufen wird, verfügt der Zielserver über keine Sicherungsverlaufsinformationen für die angegebene Datenbank. Wählen Sie in diesem Fall Sicherungsmedium aus, um die wiederherzustellende Datei oder das Medium manuell anzugeben.

    • Device

      Wählen Sie die Schaltfläche "Durchsuchen" (...) aus, um das Dialogfeld "Sicherungsgeräte auswählen" zu öffnen. Wählen Sie im Feld Sicherungsmedientyp einen der aufgeführten Medientypen aus. Um ein oder mehrere Geräte für das Feld "Sicherungsmedien" auszuwählen, wählen Sie "Hinzufügen" aus.

      Nachdem Sie dem Listenfeld "Sicherungsmedien" die gewünschten Geräte hinzugefügt haben, wählen Sie "OK" aus, um zur Seite "Allgemein" zurückzukehren.

      Wählen Sie im Listenfeld Quelle: Gerät: Datenbank den Namen der Datenbank aus, die wiederhergestellt werden soll.

      Hinweis Diese Liste ist nur verfügbar, wenn Sicherungsmedium ausgewählt wird. Nur Datenbanken mit Sicherungen auf dem ausgewählten Medium stehen zur Verfügung.

  4. Im Abschnitt Ziel wird das Feld Datenbank automatisch mit dem Namen der Datenbank aufgefüllt, die wiederhergestellt werden soll. Geben Sie zum Ändern des Datenbanknamens den neuen Namen ins Feld Datenbank ein.

  5. Lassen Sie im Feld "Wiederherstellen auf " die Standardeinstellung " Als letzte Sicherung verwendet " oder wählen Sie "Zeitachse " aus, um auf das Dialogfeld "Sicherungszeitachse " zuzugreifen, um einen Zeitpunkt manuell auszuwählen, um die Wiederherstellungsaktion zu beenden. Weitere Informationen zum Festlegen eines bestimmten Zeitpunkts finden Sie unter Backup Timeline .

  6. Wählen Sie im Raster Wiederherzustellende Sicherungssätze die wiederherzustellenden Sicherungen aus. Mit diesem Raster werden die Sicherungen angezeigt, die für den angegebenen Speicherort verfügbar sind. Standardmäßig wird ein Wiederherstellungsplan vorgeschlagen. Sie können die Auswahl im Raster ändern, um den vorgeschlagenen Wiederherstellungsplan zu überschreiben. Die Auswahl von Sicherungen, die von der Wiederherstellung einer früheren Sicherung abhängig sind, wird automatisch aufgehoben, wenn die Auswahl der früheren Sicherung aufgehoben wird.

    Informationen zu den Spalten in den Sicherungssätzen zum Wiederherstellen des Rasters finden Sie unter "Datenbank wiederherstellen" (Allgemeine Seite).

  7. Um den neuen Speicherort der Datenbankdateien anzugeben, wählen Sie die Seite "Dateien " und dann " Alle Dateien in Ordner verschieben" aus. Geben Sie einen neuen Speicherort für die Ordner Datendatei und Protokolldateian. Weitere Informationen zu diesem Raster finden Sie unter "Datenbank wiederherstellen(Dateiseite)".

  8. Passen Sie ggf. die Optionen auf der Seite Optionen an. Weitere Informationen zu diesen Optionen finden Sie auf der Seite "Datenbank wiederherstellen" (Optionsseite).

Wiederherstellen einer Datenbank an einem neuen Speicherort; optionales Umbenennen der Datenbank mithilfe von T-SQL

  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:

    FILELISTONLY VON <BACKUP_DEVICE> WITH FILE = backup_set_file_number WIEDERHERSTELLEN

    Dabei gibt backup_set_file_number die Position der Sicherung im Mediensatz an. Sie können die Position eines Sicherungssatzes mithilfe der RESTORE HEADERONLY -Anweisung abrufen. Weitere Informationen finden Sie unter Angeben eines Sicherungssatzes.

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

  2. Stellen Sie die vollständige Datenbanksicherung mithilfe der RESTORE DATABASE -Anweisung wieder her. Standardmäßig werden Daten und Protokolldateien an ihren ursprünglichen Speicherorten wiederhergestellt. Um eine Datenbank zu verschieben, verwenden Sie die MOVE-Option, um jede Datenbankdatei zu verschieben und Konflikte mit vorhandenen Dateien zu vermeiden.

Die grundlegende Transact-SQL-Syntax zum Wiederherstellen der Datenbank an einem neuen Speicherort und ein neuer Name lautet:

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* ]  

}  

;  

Hinweis

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).For more information about these arguments, see RESTORE (Transact-SQL).

Name der neuen Datenbank
Der neue Name der Datenbank.

Hinweis

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

Sicherungsmedium [ ,...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 (SQL Server) aufgezeichnet wurde.

{ 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 standardmäßig der erste Sicherungssatz auf dem Sicherungsgerät verwendet.

Weitere Informationen finden Sie unter "Angeben eines Sicherungssatzes" in RESTORE-Argumenten (Transact-SQL).

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



Hinweis: Mit RESTORE FILELISTONLYkö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_backupangegebene 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 derselben Serverinstanz erstellen.
n Ist ein Platzhalter, der angibt, dass weitere MOVE-Anweisungen angegeben werden können.

Beispiel (Transact-SQL)

In diesem Beispiel wird eine neue Datenbank mit dem Namen MyAdvWorks erstellt, indem eine Sicherung der AdventureWorks2022 -Beispieldatenbank wiederhergestellt wird, die zwei Dateien einschließt: AdventureWorks2022_Data und AdventureWorks2022_Log. Für diese Datenbank wird das einfache Wiederherstellungsmodell verwendet. Die AdventureWorks2022 -Datenbank ist bereits auf der Serverinstanz vorhanden, sodass die Dateien in der Sicherung an einem neuen Ort wiederhergestellt werden müssen. Die RESTORE FILELISTONLY-Anweisung wird verwendet, um die Anzahl und die Namen der Dateien der Datenbank zu bestimmen, die wiederhergestellt werden. Die Datenbanksicherung ist der erste Sicherungssatz auf dem Sicherungsmedium.

Hinweis

In den Beispielen zum Sichern und Wiederherstellen des Transaktionsprotokolls (einschließlich der Zeitpunktwiederherstellungen) wird, wie im folgenden MyAdvWorks_FullRM -Beispiel, die aus AdventureWorks2022 erstellte MyAdvWorks -Datenbank verwendet. Die resultierende MyAdvWorks_FullRM Datenbank muss jedoch geändert werden, um das vollständige Wiederherstellungsmodell mithilfe der folgenden Transact-SQL-Anweisung zu verwenden: ALTER DATABASE <database_name> SET RECOVERY FULL.

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

Ein Beispiel zum Erstellen einer vollständigen Datenbanksicherung der AdventureWorks2022 Datenbank finden Sie unter Erstellen einer vollständigen Datenbanksicherung (SQL Server).

Zugehörige Aufgaben

Siehe auch