Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Wenn Daten in einer Onlinedatenbank beschädigt werden, empfiehlt es sich gelegentlich, die Datenbank aus einer Datenbank-Momentaufnahme eines Zeitpunkts vor der Beschädigung wiederherzustellen, anstatt die Datenbank aus einer Sicherungskopie wiederherzustellen. Durch das Wiederherstellen einer Datenbank kann beispielsweise ein kürzlich zurückliegender, schwerwiegender Benutzerfehler (z. B. eine gelöschte Tabelle) rückgängig gemacht werden. Alle nach Erstellung der Momentaufnahme vorgenommenen Änderungen gehen jedoch verloren.
Vorbereitungen:
Wiederherstellen einer Datenbank aus einer Datenbankmomentaufnahme mithilfe vonTransact-SQL
Bevor Sie beginnen
Beschränkungen und Einschränkungen
Die Wiederherstellung wird unter folgenden Bedingungen nicht unterstützt:
Für die Datenbank sind mehrere Momentaufnahmen vorhanden. Für das Zurücksetzen darf für die Datenbank nur ein Snapshot vorhanden sein, zu dem Sie zurückkehren möchten.
In der Datenbank sind schreibgeschützte oder komprimierte Dateigruppen vorhanden.
Alle Dateien sind nun offline, waren jedoch beim Erstellen der Momentaufnahme online.
Beachten Sie vor dem Wiederherstellen einer Datenbank die folgenden Einschränkungen:
Das Zurücksetzen ist nicht für die Medienwiederherstellung vorgesehen. Eine Datenbank-Momentaufnahme ist eine unvollständige Kopie der Datenbankdateien. Wenn also die Datenbank oder die Datenbank-Momentaufnahme beschädigt wurde, ist die Wiederherstellung aus einer Momentaufnahme wahrscheinlich unmöglich. Außerdem ist es selbst dann, wenn dies möglich ist, unwahrscheinlich, dass ein Zurücksetzen im Fall einer Beschädigung das Problem behebt. Regelmäßige Sicherungen und Tests des Wiederherstellungsplans sind deshalb für den Schutz einer Datenbank unverzichtbar. Weitere Informationen finden Sie unter Sichern und Wiederherstellen von SQL Server-Datenbanken.
Hinweis
Wenn Sie die Quelldatenbank zu dem Zeitpunkt wiederherstellen müssen, an dem Sie eine Datenbank-Momentaufnahme erstellt haben, nutzen Sie das Modell der vollständigen Wiederherstellung, und implementieren Sie eine Sicherungsrichtlinie, die Ihnen dies ermöglicht.
Die ursprüngliche Quelldatenbank wird von der wiederhergestellten Datenbank überschrieben, sodass sämtliche Aktualisierungen der Datenbank seit der Erstellung der Momentaufnahme verloren gehen.
Der Rückgängigvorgang überschreibt ebenfalls die alte Protokolldatei und erstellt das Protokoll neu. Daher ist kein Rollforward der wiederhergestellten Datenbank bis zum Zeitpunkt des Benutzerfehlers möglich. Daher empfehlen wir Ihnen, das Protokoll zu sichern, bevor Sie eine Datenbank auf einen früheren Zustand zurücksetzen.
Hinweis
Es ist zwar nicht möglich, das ursprüngliche Protokoll wiederherzustellen und damit ein Rollforward der Datenbank auszuführen. Die Angaben in der ursprünglichen Protokolldatei können jedoch beim Rekonstruieren verlorener Daten helfen.
Das Zurücksetzen unterbricht die Transaktionsprotokoll-Sicherungskette. Bevor Sie Protokollsicherungen der zurückgesetzten Datenbank erstellen können, müssen Sie daher zunächst eine vollständige Datenbanksicherung oder Dateisicherung erstellen. Wir empfehlen eine vollständige Datenbanksicherung.
Während eines Wiederherstellungsvorgangs sind sowohl der Snapshot als auch die Quelldatenbank nicht verfügbar. Die Quelldatenbank und der Snapshot sind beide als „Wird wiederhergestellt“ markiert. Tritt während des Rücksetzvorgangs ein Fehler auf, versucht der Rücksetzvorgang beim nächsten Start der Datenbank erneut, das Rücksetzen abzuschließen.
Die Metadaten einer wiederhergestellten Datenbank sind dieselben wie die Metadaten zum Zeitpunkt der Momentaufnahme.
Durch das Rückgängigmachen werden alle Volltextkataloge gelöscht.
Voraussetzungen
Stellen Sie sicher, dass die Quelldatenbank und die Datenbank-Momentaufnahme die folgenden Voraussetzungen erfüllen:
Vergewissern Sie sich, dass die Datenbank nicht beschädigt wurde.
Hinweis
Wenn die Datenbank beschädigt wurde, müssen Sie sie aus einer Sicherungskopie wiederherstellen. Weitere Informationen finden Sie unter Vollständige Datenbankwiederherstellungen – Einfaches Wiederherstellungsmodell oder Vollständige Datenbankwiederherstellungen – Vollständiges Wiederherstellungsmodell.
Ermitteln Sie eine aktuelle Momentaufnahme, die vor Auftreten des Fehlers erstellt wurde. Weitere Informationen finden Sie unter Anzeigen einer Datenbankmomentaufnahme (SQL Server).
Löschen Sie alle anderen Snapshots, die derzeit in der Datenbank vorhanden sind. Weitere Informationen finden Sie unter Löschen einer Datenbankmomentaufnahme (Transact-SQL).
Sicherheit
Berechtigungen
Jeder Benutzer, der über RESTOREDATABASE Berechtigungen für die Quelldatenbank verfügt, kann sie auf den Zustand zurücksetzen, den sie zum Zeitpunkt der Erstellung eines Datenbanksnapshots hatte.
So stellen Sie eine Datenbank aus einer Datenbank-Momentaufnahme wieder her (Transact-SQL)
So setzen Sie eine Datenbank auf eine Datenbankmomentaufnahme zurück
Hinweis
Ein Beispiel für diese Prozedur finden Sie in Beispiele (Transact-SQL)an späterer Stelle in diesem Abschnitt.
Ermitteln Sie die Datenbank-Momentaufnahme, aus der Sie die Datenbank wiederherstellen möchten. Sie können die Momentaufnahmen für eine Datenbank in SQL Server Management Studio anzeigen (weitere Informationen finden Sie unter Anzeigen einer Datenbankmomentaufnahme (SQL Server)). Zudem können Sie die Quelldatenbank einer Sicht anhand der source_database_id-Spalte der sys.databases (Transact-SQL)-Katalogsicht identifizieren.
Löschen Sie alle übrigen Datenbank-Snapshots.
Informationen zum Löschen von Momentaufnahmen finden Sie unter Löschen einer Datenbankmomentaufnahme (Transact-SQL). Verwendet die Datenbank das vollständige Wiederherstellungsmodell sollten Sie das Protokoll vor dem Wiederherstellen sichern. Weitere Informationen finden Sie unter Sichern eines Transaktionsprotokolls (SQL Server) oder Sichern des Transaktionsprotokolls bei beschädigter Datenbank (SQL Server).
Führen Sie den Wiederherstellungsvorgang aus.
Für einen Wiederherstellenvorgang sind Berechtigungen für die Quelldatenbank erforderlich RESTOREDATABASE . Verwenden Sie zum Wiederherstellen der Datenbank die folgende Transact-SQL-Anweisung:
RESTORE DATABASE database_name FROM DATABASE_SNAPSHOT =database_snapshot_name
Dabei ist database_name die Quelldatenbank und database_snapshot_name der Name der Momentaufnahme, auf die Sie die Datenbank zurücksetzen möchten. Beachten Sie, dass Sie in dieser Anweisung einen Snapshot-Namen statt eines Sicherungsgeräts angeben müssen.
Weitere Informationen finden Sie unter RESTORE (Transact-SQL).
Hinweis
Während des Wiederherstellungsvorgangs stehen weder die Momentaufnahme noch die Quelldatenbank zur Verfügung. Die Quelldatenbank und der Snapshot sind beide mit „Wird wiederhergestellt.“ markiert. Tritt während des Zurücksetzens ein Fehler auf, wird beim erneuten Start der Datenbank versucht, den Vorgang abzuschließen.
Wenn sich der Datenbankbesitzer seit dem Erstellen der Datenbankmomentaufnahme geändert hat, sollten Sie möglicherweise den Datenbankbesitzer der wiederhergestellten Datenbank aktualisieren.
Hinweis
In der wiederhergestellten Datenbank bleiben die Berechtigungen und die Konfiguration (wie z. B. Datenbankbesitzer und Wiederherstellungsmodell) der Datenbankmomentaufnahme erhalten.
Starten Sie die Datenbank.
Optional können Sie eine Sicherung der zurückgesetzten Datenbank erstellen, insbesondere wenn sie das vollständige (oder massenprotokollierte) Wiederherstellungsmodell verwendet. Weitere Informationen zum Sichern einer Datenbank finden Sie unter Erstellen einer vollständigen Datenbanksicherung (SQL Server).
Beispiele (Transact-SQL)
Dieser Abschnitt enthält die folgenden Beispiele für das Wiederherstellen einer Datenbank aus einer Datenbank-Momentaufnahme:
A. Wiederherstellen einer Momentaufnahme für die AdventureWorks-Datenbank
In diesem Beispiel wird davon ausgegangen, dass derzeit in der AdventureWorks2025 -Datenbank nur eine Momentaufnahme vorhanden ist. Das Beispiel zum Erstellen der Momentaufnahme, auf die die Datenbank hier zurückgesetzt wird, finden Sie unter Erstellen einer Datenbankmomentaufnahme (Transact-SQL).
USE master;
-- Reverting AdventureWorks to AdventureWorks_dbss1800
RESTORE DATABASE AdventureWorks from
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
B. Wiederherstellen einer Momentaufnahme für die Sales-Datenbank
In diesem Beispiel wird davon ausgegangen, dass derzeit zwei Momentaufnahmen für die Sales -Datenbank vorhanden sind: sales_snapshot0600 und sales_snapshot1200. Das Beispiel löscht den älteren der Snapshots und setzt die Datenbank auf den neueren Snapshot zurück.
Den Code zum Erstellen der Beispieldatenbank und der Momentaufnahmen, für die dieses Beispiel gilt, finden Sie wie folgt:
Informationen zur Vertriebsdatenbank und zur sales_snapshot0600 Momentaufnahme finden Sie unter "Erstellen einer Datenbank mit Dateigruppen" und "Erstellen einer Datenbankmomentaufnahme" in CREATE DATABASE (SQL Server Transact-SQL).
Informationen zur sales_snapshot1200 -Momentaufnahme finden Sie unter „Erstellen einer Momentaufnahme für die Sales-Datenbank“ in Erstellen einer Datenbankmomentaufnahme (Transact-SQL).
--Test to see if sales_snapshot0600 exists and if it
-- does, delete it.
IF EXISTS (SELECT database_id FROM sys.databases
WHERE NAME='sales_snapshot0600')
DROP DATABASE SalesSnapshot0600;
GO
-- Reverting Sales to sales_snapshot1200
USE master;
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';
GO
Verwandte Aufgaben
Siehe auch
Datenbank-Momentaufnahmen (SQL Server)
RESTORE (Transact-SQL)
sys.databases (Transact-SQL)
Datenbankspiegelung und Datenbankmomentaufnahmen (SQL Server)