Freigeben über


Vorgehensweise: Wiederherstellen einer Datenbank bis zu einer Datenbankmomentaufnahme (Transact-SQL)

Datenbankmomentaufnahmen 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 einer Datenbankmomentaufnahme, 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 eine Datenbankmomentaufnahme 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 einer Momentaufnahme 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 einer Datenbankmomentaufnahme wieder her

  1. Identifizieren Sie die Datenbankmomentaufnahme, aus dem Sie die Datenbank wiederherstellen möchten. Sie können die Momentaufnahmen 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 Datenbankmomentaufnahmen.

    Weitere Informationen zum Löschen von Momentaufnahmen 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 der Momentaufnahmen, aus dem die Datenbank wiederhergestellt werden soll. Beachten Sie, dass Sie in dieser Anweisung einen Momentaufnahmenamen statt eines Sicherungsmediums angeben müssen.

    Weitere Informationen finden Sie unter RESTORE (Transact-SQL).

    HinweisHinweis

    Während des Wiederherstellungsvorgangs stehen weder die Momentaufnahme noch die Quelldatenbank zur Verfügung. Die Quelldatenbank und die Momentaufnahme 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 der Datenbankmomentaufnahme 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) der Datenbankmomentaufnahme 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 einer Datenbankmomentaufnahme.

A. Wiederherstellen einer Momentaufnahme für die AdventureWorks2008R2-Datenbank

In diesem Beispiel wird davon ausgegangen, dass derzeit in der AdventureWorks2008R2-Datenbank nur eine Momentaufnahme vorhanden ist. Das Beispiel, mit dem die Momentaufnahme erstellt wird, zu dem die Datenbank hier wiederhergestellt wird, finden Sie unter Vorgehensweise: Erstellen einer Datenbankmomentaufnahme (Transact-SQL).

USE master;
-- Reverting AdventureWorks2008R2 to AdventureWorks2008R2_dbss1800
RESTORE DATABASE AdventureWorks2008R2 from 
DATABASE_SNAPSHOT = 'AdventureWorks2008R2_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. Durch dieses Beispiel wird die ältere Momentaufnahme gelöscht und die Datenbank mithilfe der aktuelleren Momentaufnahme wiederhergestellt.

Den Code zum Erstellen der Beispieldatenbank und der Momentaufnahmen, 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