Vorgehensweise: Wiederherstellen einer Datenbank bis zu einem Datenbanksnapshot (Transact-SQL)
Datenbanksnapshots sind keine redundanten Speicher und bieten folglich keinen Schutz vor Datenträgerfehlern oder sonstigen Formen von Beschädigungen. Tritt jedoch ein Benutzerfehler in einer Onlinedatenbank auf, können Sie die Datenbank mithilfe eines Datenbanksnapshots, der vor dem Fehler liegt, wiederherstellen.
Wichtig |
---|
Regelmäßige Sicherungen und Tests des Wiederherstellungsplans tragen wesentlich zum Schutz einer Datenbank bei. Wenn Sie die Quelldatenbank zu dem Zeitpunkt wiederherstellen müssen, an dem Sie einen Datenbanksnapshot erstellt haben, implementieren Sie eine Sicherungsrichtlinie, die Ihnen dies ermöglicht. |
Beim Wiederherstellen wird die ursprüngliche Quelldatenbank durch die wiederhergestellte Datenbank überschrieben. Durch das Wiederherstellen eines Snapshots werden alle Volltextkataloge gelöscht.
Wichtig |
---|
Vor dem Wiederherstellen sollten Sie sich mit den Informationen in Zurückkehren zu einem Datenbanksnapshot vertraut machen. |
So stellen Sie eine Datenbank bis zu einem Datenbanksnapshot wieder her
Identifizieren Sie den Datenbanksnapshot, aus dem Sie die Datenbank wiederherstellen möchten. Sie können die Snapshots einer Datenbank in SQL Server Management Studio anzeigen (siehe Vorgehensweise: Anzeigen eines Datenbanksnapshots (SQL Server Management Studio)). 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 anderen Datenbanksnapshots.
Weitere Informationen zum Löschen von Snapshots finden Sie unter Vorgehensweise: Löschen eines Datenbanksnapshots (Transact-SQL). Verwendet die Datenbank das vollständige Wiederherstellungsmodell sollten Sie das Protokoll vor dem Wiederherstellen sichern. Weitere Informationen finden Sie unter Vorgehensweise: Sichern eines Transaktionsprotokolls (SQL Server Management Studio) oder Vorgehensweise: Sichern des Transaktionsprotokolls bei beschädigter Datenbank (Transact-SQL)
Führen Sie den Wiederherstellungsvorgang aus.
Für einen Wiederherstellungsvorgang sind RESTORE DATABASE-Berechtigungen für die Quelldatenbank erforderlich. 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 des Snapshots, aus dem die Datenbank wiederhergestellt werden soll. Beachten Sie, dass Sie in dieser Anweisung einen Snapshotnamen statt eines Sicherungsmediums angeben müssen.
Weitere Informationen finden Sie unter RESTORE (Transact-SQL).
Hinweis Während des Wiederherstellungsvorgangs stehen weder der Snapshot noch die Quelldatenbank zur Verfügung. Die Quelldatenbank und der Snapshot sind als von einem Wiederherstellungsvorgang betroffen gekennzeichnet. Falls während der Wiederherstellung ein Fehler auftritt, wird beim nächsten Start der Datenbank versucht, die Wiederherstellung abzuschließen.
Hat sich seit der Erstellung des Datenbanksnapshots der Datenbankbesitzer geändert, ist es möglicherweise sinnvoll, den Datenbankbesitzer der wiederhergestellten Datenbank zu aktualisieren.
Hinweis In der wiederhergestellten Datenbank bleiben die Berechtigungen und die Konfiguration (wie z. B. Datenbankbesitzer und Wiederherstellungsmodell) des Datenbanksnapshots erhalten.
Starten Sie die Datenbank.
Sie haben die Option, die wiederhergestellte Datenbank zu sichern; dies empfiehlt sich besonders, wenn das vollständige (oder das massenprotokollierte) Wiederherstellungsmodell für die Datenbank verwendet wird. Informationen zum Sichern der Datenbank finden Sie unter Vorgehensweise: Sichern einer Datenbank (SQL Server Management Studio) oder Vorgehensweise: Erstellen einer vollständigen Datenbanksicherung (Transact-SQL).
Beispiel
Dieser Abschnitt enthält Beispiele für das Wiederherstellen einer Datenbank bis zu einem Datenbanksnapshot.
A. Wiederherstellen eines Snapshots für die AdventureWorks-Datenbank
In diesem Beispiel wird davon ausgegangen, dass derzeit in der AdventureWorks-Datenbank nur ein Snapshot vorhanden ist. Das Beispiel, mit dem der Snapshot erstellt wird, zu dem die Datenbank hier wiederhergestellt wird, finden Sie unter Vorgehensweise: Erstellen eines Datenbanksnapshots (Transact-SQL).
USE master;
-- Reverting AdventureWorks to AdventureWorks_dbss1800
RESTORE DATABASE AdventureWorks from
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
B. Wiederherstellen eines Snapshots für die Sales-Datenbank
In diesem Beispiel wird davon ausgegangen, dass derzeit zwei Snapshots für die Sales-Datenbank vorhanden sind: sales_snapshot0600 und sales_snapshot1200. Durch dieses Beispiel wird der ältere Snapshot gelöscht und die Datenbank mithilfe des aktuelleren Snapshots wiederhergestellt.
Den Code zum Erstellen der Beispieldatenbank und der Snapshots, für die dieses Beispiel gilt, finden Sie wie folgt:
Den Code für die Sales-Datenbank und den sales_snapshot0600-Snapshot finden Sie in den Beispielen "Erstellen einer Datenbank mit Dateigruppen" und "Erstellen eines Datenbanksnapshots" in CREATE DATABASE (Transact-SQL).
Den Code für den sales_snapshot1200-Snapshot finden Sie unter "Erstellen eines Snapshots für die Sales-Datenbank" in Vorgehensweise: Erstellen eines Datenbanksnapshots (Transact-SQL).
--Test to see if sales_snapshot0600 exists and if it
-- does, delete it.
IF EXISTS (SELECT dbid 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
Siehe auch