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.

Wichtiger HinweisWichtig

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.

Wichtiger HinweisWichtig

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

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

  2. 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)

  3. 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).

    HinweisHinweis

    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.

  4. Hat sich seit der Erstellung des Datenbanksnapshots der Datenbankbesitzer geändert, ist es möglicherweise sinnvoll, den Datenbankbesitzer der wiederhergestellten Datenbank zu aktualisieren.

    HinweisHinweis

    In der wiederhergestellten Datenbank bleiben die Berechtigungen und die Konfiguration (wie z. B. Datenbankbesitzer und Wiederherstellungsmodell) des Datenbanksnapshots erhalten.

  5. Starten Sie die Datenbank.

  6. 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:

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