RESTORE (Transact-SQL)
Aktualisiert: 12. Dezember 2006
Stellt Sicherungen wieder her, die mit dem BACKUP-Befehl erstellt wurden. Dieser Befehl ermöglicht Folgendes:
- Wiederherstellen einer ganzen Datenbank aus einer vollständigen Datenbanksicherung (vollständige Wiederherstellung).
- Wiederherstellen eines Teils einer Datenbank (teilweise Wiederherstellung).
- Wiederherstellen bestimmter Dateien, Dateigruppen oder Seiten einer Datenbank (Datei- oder Seitenwiederherstellung).
- Wiederherstellen eines Transaktionsprotokolls in einer Datenbank (Transaktionsprotokollwiederherstellung).
- Wiederherstellen einer Datenbank auf den Zeitpunkt, der über einen Datenbanksnapshot erfasst wurde.
Weitere Informationen zum Sichern und Wiederherstellen von Datenbanken finden Sie unter Sichern und Wiederherstellen von Datenbanken in SQL Server.
Hinweis: |
---|
Beschreibungen der Argumente finden Sie unter RESTORE-Argumente (Transact-SQL). |
Transact-SQL-Syntaxkonventionen
Syntax
--To restore a complete database from a full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var }
[ FROM <backup_device> [ ,...n ] ]
[ WITH
[ { CHECKSUM | NO_CHECKSUM } ]
[ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
[ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword |
@mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] BUFFERCOUNT = { buffercount | @buffercount_variable } ]
[ [ , ] MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable } ]
[ [ , ] ENABLE_BROKER ]
[ [ , ] ERROR_BROKER_CONVERSATIONS ]
[ [ , ] NEW_BROKER ]
[ [ , ] { RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
} ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] RESTRICTED_USER ]
[ [ , ] { REWIND | NOREWIND } ]
[ [ , ] { UNLOAD | NOUNLOAD } ]
[ [ , ] STATS [ = percentage ] ]
[ [ , ] { STOPAT = { 'date_time' | @date_time_var }
| STOPATMARK = { 'lsn:lsn_number' }
[ AFTER 'datetime' ]
| STOPBEFOREMARK = { 'lsn:lsn_number' }
[ AFTER 'datetime' ]
} ]
]
[;]
<backup_device> ::=
{
{ logical_backup_device_name |
@logical_backup_device_name_var }
| { DISK | TAPE } = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
--Restore part of a database (a partial restore):
RESTORE DATABASE { database_name | @database_name_var }
<files_or_filegroups> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
[ WITH
PARTIAL
[ [ , ] { CHECKSUM | NO_CHECKSUM } ]
[ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
[ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword |
@mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] NORECOVERY ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] RESTRICTED_USER ]
[ [ , ] { REWIND | NOREWIND } ]
[ [ , ] { UNLOAD | NOUNLOAD } ]
[ [ , ] STATS [=percentage ] ]
[ [ , ] { STOPAT = { 'date_time' | @date_time_var }
| STOPATMARK = { 'lsn:lsn_number' }
[ AFTER 'datetime' ]
| STOPBEFOREMARK = { 'lsn:lsn_number' }
[ AFTER 'datetime' ]
} ]
]
[;]
<backup_device> ::=
{
{ logical_backup_device_name |
@logical_backup_device_name_var }
| { DISK | TAPE } = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
<files_or_filegroups> ::=
{
FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
|
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
|
READ_WRITE_FILEGROUPS
}
--To Restore Specific Files, Filegroups, or Pages:
RESTORE DATABASE { database_name | @database_name_var }
<file_or_filegroup_or_pages> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
[ WITH
[ { CHECKSUM | NO_CHECKSUM } ]
[ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
[ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword |
@mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] NORECOVERY ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] RESTRICTED_USER ]
[ [ , ] { REWIND | NOREWIND } ]
[ [ , ] { UNLOAD | NOUNLOAD } ]
[ [ , ] STATS [ =percentage ] ]
]
[;]
<backup_device> ::=
{
{ logical_backup_device_name |
@logical_backup_device_name_var }
| { DISK | TAPE } = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
<file_or_filegroup_or_pages> ::=
{
FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } }
| PAGE = 'file:page [ ,...n ]'
}
--To Restore a Transaction Log:
RESTORE LOG { database_name | @database_name_var }
[ <file_or_filegroup_or_pages> [ ,...n ] ]
[ FROM <backup_device> [ ,...n ] ]
[ WITH
[ { CHECKSUM | NO_CHECKSUM } ]
[ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
[ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] { RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var } }
]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] RESTRICTED_USER ]
[ [ , ] { REWIND | NOREWIND } ]
[ [ , ] { UNLOAD | NOUNLOAD } ]
[ [ , ] STATS [=percentage ] ]
[ [ , ] { STOPAT = { 'date_time' | @date_time_var }
| STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER 'datetime' ]
| STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER 'datetime' ]
} ]
]
[;]
<backup_device> ::=
{
{ logical_backup_device_name |
@logical_backup_device_name_var }
| { DISK | TAPE } = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
<file_or_filegroup_or_pages> ::=
{
FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } }
| PAGE = 'file:page [ ,...n ]'
}
--To Revert a Database to a Database Snapshot:
RESTORE DATABASE { database_name | @database_name_var }
FROM DATABASE_SNAPSHOT = database_snapshot_name
Argumente
Beschreibungen der Argumente finden Sie unter RESTORE-Argumente (Transact-SQL).
Hinweise
Wenn bei einer Offlinewiederherstellung die angegebene Datenbank verwendet wird, zwingt RESTORE die Benutzer nach einer kurzen Verzögerung zum Beenden der Datenbankverwendung. Bei der Onlinewiederherstellung einer nicht primären Dateigruppe kann die Datenbank weiter verwendet werden, es sei denn, die zu wiederherstellende Dateigruppe wird offline geschaltet. Alle in der angegebenen Datenbank vorhandenen Daten werden durch die wiederhergestellten Daten ersetzt.
Weitere Informationen zur Datenbankwiederherstellung finden Sie unter Grundlegendes zur Funktionsweise der Wiederherstellung von Sicherungen in SQL Server und Implementieren von Wiederherstellungsszenarien für SQL Server-Datenbanken.
Wiederherstellungsvorgänge über Plattformen hinweg, sogar zwischen unterschiedlichen Prozessortypen, können ausgeführt werden, solange die Sortierung der Datenbank vom Betriebssystem unterstützt wird.
RESTORE kann nach einem Fehler neu gestartet werden. Außerdem können Sie RESTORE anweisen, den Vorgang auch bei Fehlern fortzusetzen und so viele Daten wie möglich wiederherzustellen (siehe die Option CONTINUE_AFTER_ERROR). Weitere Informationen finden Sie unter Reagieren auf SQL Server-Wiederherstellungsfehler als Folge von beschädigten Sicherungen.
RESTORE ist nicht in einer expliziten oder implizierten Transaktion zulässig.
Für das Wiederherstellen einer beschädigten master-Datenbank ist eine spezielle Vorgehensweise erforderlich. Weitere Informationen finden Sie unter Überlegungen zum Wiederherstellen der master-Datenbank.
Sicherungen, die mit Microsoft SQL Server 2005 erstellt wurden, können nicht für eine frühere Version von SQL Server wiederhergestellt werden.
Durch das Wiederherstellen einer Datenbank wird der Plancache für die Instanz von SQL Server gelöscht. Durch das Löschen des Plancaches wird eine Neukompilierung aller nachfolgenden Ausführungspläne verursacht, und möglicherweise entsteht plötzlich eine temporäre Verringerung der Abfrageleistung. In SQL Server 2005 Service Pack 2 enthält das SQL Server-Fehlerprotokoll für jeden geleerten Cachespeicher im Plancache folgende Meldung zur Information: "SQL Server hat für den '%s'-Cachespeicher (Bestandteil des Plancache) %d Leerungen des Cachespeichers gefunden, die von Datenbankwartungs- oder Neukonfigurierungsvorgängen ausgelöst wurden". Diese Meldung wird alle fünf Minuten protokolliert, solange der Cache innerhalb dieses Zeitintervalls geleert wird.
Szenarien für die Wiederherstellung
SQL Server 2005 unterstützt eine Vielzahl von Wiederherstellungsszenarien:
- Vollständige Datenbankwiederherstellung
Stellt die gesamte Datenbank wieder her. Dabei wird mit einer vollständigen Datenbanksicherung begonnen, darauf folgt gegebenenfalls eine differenzielle Datenbanksicherung (sowie Protokollsicherungen). Weitere Informationen finden Sie unter Ausführen einer vollständigen Datenbankwiederherstellung (einfaches Wiederherstellungsmodell) oder Ausführen einer vollständigen Datenbankwiederherstellung (vollständiges Wiederherstellungsmodell). - Dateiwiederherstellung
Stellt eine Datei oder Dateigruppe in einer Datenbank mit mehreren Dateigruppen wieder her. Beachten Sie, dass die Datei im Rahmen des Modells der einfachen Wiederherstellung zu einer schreibgeschützten Dateigruppe gehören muss. Nach einer vollständigen Dateiwiederherstellung kann eine differenzielle Dateisicherung wiederhergestellt werden. Weitere Informationen finden Sie unter Wiederherstellen von Dateien (vollständiges Wiederherstellungsmodell) und unter Ausführen von Dateiwiederherstellungen (einfaches Wiederherstellungsmodell). - Seitenwiederherstellung
Stellt einzelne Seiten wieder her. Die Seitenwiederherstellung ist nur bei den Modellen der vollständigen und der massenprotokollierten Wiederherstellung verfügbar. Weitere Informationen finden Sie unter Ausführen von Seitenwiederherstellungen. - Schrittweise Wiederherstellung
Stellt die Datenbank schrittweise wieder her, wobei mit der primären Dateigruppe und einer oder mehreren sekundären Dateigruppen begonnen wird. Eine schrittweise Wiederherstellung beginnt mit RESTORE DATABASE, wobei die Option PARTIAL verwendet wird und eine oder mehrere sekundäre Dateigruppen für die Wiederherstellung angegeben werden. Weitere Informationen finden Sie unter Ausführen der schrittweisen Wiederherstellung. - Nur Wiederherstellung
Stellt Daten wieder her, die bereits konsistent mit der Datenbank sind und nur zur Verfügung gestellt werden müssen. Weitere Informationen finden Sie unter Wiederherstellen einer Datenbank ohne Wiederherstellen der Daten. - Wiederherstellung des Transaktionsprotokolls
Beim Modell der vollen oder massenprotokollierten Wiederherstellung ist die Wiederherstellung von Protokollsicherungen erforderlich, um den gewünschten Wiederherstellungspunkt zu erreichen. Weitere Informationen zur Wiederherstellung von Protokollsicherungen finden Sie unter Anwenden von Transaktionsprotokollsicherungen. - Erstellen einer Spiegeldatenbank.
Weitere Informationen finden Sie unter Vorgehensweise: Vorbereiten einer Spiegeldatenbank für die Spiegelung (Transact-SQL). - Erstellen und Verwalten eines Standbyservers. Weitere Informationen zu Standbyservern finden Sie unter Verwenden von betriebsbereiten Standbyservern.
Abwärtskompatibilität
Aus Gründen der Abwärtskompatibilität können die folgenden Schlüsselwörter in der Syntax einer RESTORE-Anweisung verwendet werden:
- Das Schlüsselwort LOAD kann anstelle des Schlüsselwortes RESTORE verwendet werden.
- Das Schlüsselwort TRANSACTION kann anstelle des Schlüsselwortes LOG verwendet werden.
- Das Schlüsselwort DBO_ONLY kann anstelle des Schlüsselwortes RESTRICTED_USER verwendet werden.
Für das vardecimal-Speicherformat aktivierte Datenbanken
Das Sichern und Wiederherstellen ist mit dem vardecimal-Speicherformat fehlerfrei möglich, doch muss Datenbankmodul mindestens auf SQL Server 2005 Service Pack 2 aktualisiert werden. Sie können die Sicherung einer komprimierten Datenbank nicht in eine unkomprimierte Datenbank wiederherstellen. Außerdem können Sie die Sicherung einer komprimierten Datenbank mit Service Pack 2 nicht in eine frühere Version von SQL Server wiederherstellen. Weitere Informationen zum vardecimal-Speicherformat finden Sie unter Speichern von Dezimaldaten als Daten variabler Länge.
Vergleich zwischen RECOVERY und NORECOVERY
Ein Rollback wird von der RESTORE-Anweisung über die Optionen [ RECOVERY | NORECOVERY ] gesteuert:
- NORECOVERY gibt an, dass kein Rollback erfolgt. Damit kann das Rollforward die nächste Anweisung in der Sequenz fortsetzen.
In diesem Fall können über die Wiederherstellungssequenz andere Sicherungen wiederhergestellt werden, und für diese kann ein Rollforward ausgeführt werden. - RECOVERY (die Standardeinstellung) gibt an, dass das Rollback erst dann ausgeführt werden kann, wenn das Rollforward für die aktuelle Sicherung abgeschlossen ist.
Das Wiederherstellen der Datenbank erfordert, dass die gesamte Gruppe der wiederhergestellten Daten (Rollforwardgruppe) mit der Datenbank konsistent ist. Wenn das Rollforward für die Rollforwardgruppe nicht weit genug ausgeführt wurde, um die Konsistenz mit der Datenbank herzustellen, und wenn RECOVERY angegeben ist, dann gibt das Datenbankmodell einen Fehler aus.
Wiederholen einer Wiederherstellung
Eine Wiederherstellung kann nicht rückgängig gemacht werden. Sie können jedoch die Auswirkungen des Datenkopiervorgangs und des Rollforwards negieren, indem Sie noch einmal beginnen und pro Datei vorgehen. Um noch einmal zu starten, stellen Sie die gewünschte Datei wieder her und führen dann erneut das Rollforward aus. Wenn Sie beispielsweise versehentlich zu viele Protokollsicherungen wiederhergestellt haben und über den beabsichtigten Endpunkt hinausgegangen sind, müssen Sie die Sequenz neu starten.
Eine Wiederherstellungssequenz kann abgebrochen und neu gestartet werden, indem der gesamte Inhalt der betroffenen Dateien wiederhergestellt wird.
Wiederherstellen von Volltextdaten
In SQL Server 2005 werden bei einer vollständigen Wiederherstellung Volltextdaten zusammen mit anderen Datenbankdaten wiederhergestellt. Beim Wiederherstellungsvorgang werden Volltextkataloge als Dateien behandelt. Beim Verwenden der normalen Syntax RESTORE DATABASE database_name FROM backup_device
erfolgt die Wiederherstellung der Volltextdateien bei der Wiederherstellung der Datenbankdateien.
Die RESTORE-Anweisung kann auch für folgende Wiederherstellungen verwendet werden: Wiederherstellungen auf alternativen Speicherorten, differenzielle Wiederherstellungen, Datei- und Dateigruppenwiederherstellungen sowie differenzielle Datei- und Dateigruppenwiederherstellungen von Volltextdaten. Darüber hinaus können mit RESTORE Volltextdateien ohne oder mit Datenbankdaten wiederhergestellt werden.
Hinweis: |
---|
Sie können einen Volltextkatalog nicht im Stammverzeichnis wiederherstellen. |
Weitere Informationen finden Sie unter Sichern und Wiederherstellen von Volltextkatalogen.
Datenbankeinstellungen und -wiederherstellung
Bei einer Wiederherstellung werden die meisten Datenbankoptionen, die mit ALTER DATABASE festgelegt werden können, auf die Werte zurückgesetzt, die am Ende der Sicherung gültig waren.
Hinweis: |
---|
Dieses Verhalten unterscheidet sich von Versionen von SQL Server vor SQL Server 2000. |
Das Verwenden der Option WITH RESTRICTED_USER setzt dieses Verhalten jedoch für die Einstellung der Benutzerzugriffsoption außer Kraft. Diese Einstellung wird immer im Anschluss an eine RESTORE-Anweisung festgelegt, die die Option WITH RESTRICTED_USER einschließt.
Tabellen mit Sicherungs- und Wiederherstellungsverlauf
SQL Server enthält Tabellen mit Sicherungs- und Wiederherstellungsverlauf, in denen die Sicherungs- und Wiederherstellungsaktivität für jede Serverinstanz nachverfolgt wird. Beim Ausführen einer Wiederherstellung werden auch die Tabellen mit Sicherungsverläufen geändert. Informationen zu diesen Tabellen finden Sie unter Anzeigen von Informationen zu Sicherungen.
RESTORE LOG
Ab SQL Server 2005 kann RESTORE LOG eine Dateiliste einschließen, um das Erstellen von Dateien bei einem Rollforward zu ermöglichen. Diese wird verwendet, wenn die Protokollsicherung Protokolleinträge enthält, die erstellt wurden, als der Datenbank eine Datei hinzugefügt wurde.
Hinweis: |
---|
Bei einer Datenbank, die das Modell der vollen oder massenprotokollierten Wiederherstellung verwendet, erfordert SQL Server 2005 in den meisten Fällen das Sichern des Protokollfragments, bevor die Datenbank wiederhergestellt wird. Wird eine Datenbank wiederhergestellt, ohne dass zuerst das Protokollfragment gesichert wird, wird ein Fehler ausgegeben. Dies gilt nicht, wenn die RESTORE-Anweisung entweder die WITH REPLACE- oder WITH STOPAT-Klausel enthält. Weitere Informationen zur Sicherung des Protokollfragments finden Sie unter Sicherungen des Protokollfragments. |
Onlinewiederherstellung
Hinweis: |
---|
Die Onlinewiederherstellung ist nur in SQL Server 2005 Enterprise Edition zulässig. |
Wenn die Onlinewiederherstellung unterstützt wird und die Datenbank online ist, sind Datei- und Seitenwiederherstellungen automatisch Onlinewiederherstellungen. Dies gilt auch für Wiederherstellungen einer sekundären Dateigruppe nach der Anfangsphase einer schrittweisen Wiederherstellung.
Hinweis: |
---|
Bei Onlinewiederherstellungen können verzögerte Transaktionen auftreten. |
Weitere Informationen finden Sie unter Ausführen von Onlinewiederherstellungen.
Schrittweise Wiederherstellung
Die schrittweise Wiederherstellung ist neu in SQL Server 2005 und bildet eine Erweiterung der Teilwiederherstellung von Microsoft SQL Server 2000. Die schrittweise Wiederherstellung ermöglicht die Wiederherstellung von Dateigruppen nach einer ersten Teilwiederherstellung der primären und einiger sekundärer Dateigruppen. Dateigruppen, die nicht wiederhergestellt werden, werden als offline markiert und sind nicht zugänglich. Die Offlinedateigruppen können jedoch erst später bei einer Dateiwiederherstellung wiederhergestellt werden. Um die Wiederherstellung der gesamten Datenbank in mehreren Stufen zu verschiedenen Zeitpunkten zu ermöglichen, werden bei der schrittweisen Wiederherstellung Prüfungen verwaltet. Damit wird sichergestellt, dass die Datenbank am Ende konsistent ist.
Hinweis: |
---|
In SQL Server 2000 kann eine Teilwiederherstellung nur ausgehend von einer vollständigen Datenbanksicherung ausgeführt werden. Diese Einschränkung wurde in SQL Server 2005 aufgehoben. |
Weitere Informationen finden Sie unter Ausführen der schrittweisen Wiederherstellung.
Wiederherstellen einer Datenbank aus einem Datenbanksnapshot
Über einen Datenbank-Wiederherstellungsvorgang (angegeben mithilfe der Option DATABASE_SNAPSHOT) wird eine Datenbank mit einer vollständigen Quelle in einen früheren Zustand versetzt, indem sie auf den Zeitpunkt eines Datenbanksnapshots wiederhergestellt wird. Das bedeutet, dass die Quelldatenbank mit Daten von dem Zeitpunkt überschrieben wird, der im angegebenen Datenbanksnapshot erfasst ist. Derzeit darf nur der Snapshot vorhanden sein, aus dem Sie die Datenbank wiederherstellen. Bei diesem Wiederherstellungsvorgang wird das Protokoll neu erstellt (deshalb können Sie für eine wiederhergestellte Datenbank später kein Rollforward bis zum Punkt des Benutzerfehlers durchführen).
Der Datenverlust beschränkt sich auf Updates der Datenbank, die nach der Erstellung des Snapshots vorgenommen wurden. Die Metadaten einer wiederhergestellten Datenbank sind dieselben wie die Metadaten zum Zeitpunkt der Snapshoterstellung. Durch das Wiederherstellen eines Snapshots werden jedoch alle Volltextkataloge gelöscht.
Die Wiederherstellung von einem Datenbanksnapshot ist nicht für die Medienwiederherstellung vorgesehen. Im Gegensatz zu einem normalen Sicherungssatz ist der Datenbanksnapshot eine unvollständige Kopie der Datenbankdateien. Wenn die Datenbank oder der Datenbanksnapshot beschädigt ist, ist die Wiederherstellung von einem Snapshot vermutlich unmöglich. Zudem ist es eher unwahrscheinlich, dass das Problem durch eine Wiederherstellung im Falle einer Beschädigung behoben wird, selbst wenn eine Wiederherstellung möglich ist.
Einschränkungen zur Wiederherstellung
Die Wiederherstellung wird unter folgenden Bedingungen nicht unterstützt:
- Die Quelldatenbank enthält schreibgeschützte oder komprimierte Dateigruppen.
- Mindestens eine Datei ist offline, die beim Erstellen des Snapshots online war.
- Derzeit ist mehr als ein Snapshot der Datenbank vorhanden.
Weitere Informationen finden Sie unter Zurückkehren zu einem Datenbanksnapshot.
Berechtigungen
Ist die wiederherzustellende Datenbank nicht vorhanden, 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 (für die Option FROM DATABASE_SNAPSHOT ist die Datenbank immer vorhanden).
RESTORE-Berechtigungen werden Rollen erteilt, in denen Mitgliedsinformationen immer für den Server verfügbar sind. Da die Mitgliedschaft einer festen Datenbankrolle nur geprüft werden kann, wenn die Datenbank unbeschädigt ist und auf sie zugegriffen werden kann, was beim Ausführen von RESTORE nicht immer der Fall ist, verfügen Mitglieder der festen Datenbankrolle db_owner nicht über RESTORE-Berechtigungen.
Bei einem Sicherungsvorgang können optional Kennwörter für einen Mediensatz, einen Sicherungssatz oder für beides angegeben werden. Wenn ein Kennwort für einen Medien- oder Sicherungssatz definiert wurde, müssen Sie in der RESTORE-Anweisung ein oder mehrere richtige Kennwörter angeben. Über diese Kennwörter werden nicht autorisierte Wiederherstellungsoptionen und unbefugtes Anfügen von Sicherungssätzen an Medien mithilfe der Tools von SQL Server 2005 verhindert. Kennwortgeschützte Medien können nicht mit der Option FORMAT der BACKUP-Anweisung überschrieben werden.
Sicherheitshinweis: |
---|
Dieses Kennwort bietet also nur unzureichenden Schutz. Es soll die falsche Wiederherstellung mithilfe von SQL Server 2005-Tools durch autorisierte oder nicht autorisierte Benutzer verhindern. Es verhindert nicht das Lesen der Sicherungsdaten mithilfe anderer Mittel oder die Ersetzung des Kennwortes. Eine bewährte Methode für den Schutz von Sicherungen ist das Verwahren von Sicherungsbändern an einem sicheren Ort oder das Sichern in Datenträgerdateien, die durch eine adäquate Zugriffssteuerungsliste (ACL, Access Control List) geschützt sind. Die ACLs sollten für den Verzeichnisstamm eingerichtet werden, unter dem die Sicherungen erstellt werden. |
Beispiele
Hinweis: |
---|
Die AdventureWorks-Datenbank wird nur zur Veranschaulichung dargestellt. AdventureWorks ist eine der Beispieldatenbanken in SQL Server 2005. Adventure Works Cycles ist eine zum Demonstrieren von Datenbankkonzepten und -szenarien erfundene Produktionsfirma. Weitere Informationen zu dieser Datenbank finden Sie unter Beispiele und Beispieldatenbanken. |
Bei allen Beispielen wird davon ausgegangen, dass eine vollständige Datenbanksicherung ausgeführt wurde.
Die Beispiele zu RESTORE schließen Folgendes ein:
- A. Wiederherstellen einer vollständigen Datenbank
- B. Wiederherstellen vollständiger und differenzieller Datenbanksicherungen
- C. Wiederherstellen einer Datenbank mit der RESTART-Syntax
- D. Wiederherstellen einer Datenbank und Verschieben von Dateien
- E. Kopieren einer Datenbank mithilfe von BACKUP und RESTORE
- F. Wiederherstellen eines bestimmten Zeitpunktes mithilfe von STOPAT
- G. Wiederherstellen eines Transaktionsprotokolls bis zu einer Markierung
- H. Wiederherstellen mit der TAPE-Syntax
- I. Wiederherstellen mit der FILE- und FILEGROUP-Syntax
- J. Wiederherstellung aus einem Datenbanksnapshot
Hinweis: |
---|
Weitere Beispiele finden Sie unter Beispiele von Wiederherstellungssequenzen für mehrere Wiederherstellungsszenarien und auch in den in Sichern und Wiederherstellen (Transact-SQL) (Themen zur Vorgehensweise) aufgeführten Themen über die Vorgehensweisen zur Wiederherstellung. |
A. Wiederherstellen einer vollständigen Datenbank
Im folgenden Beispiel wird eine vollständige Datenbanksicherung vom logischen Sicherungsmedium AdventureWorksBackups
wiederhergestellt. Ein Beispiel für das Erstellen dieses Mediums finden Sie unter Sicherungsmedien.
RESTORE DATABASE AdventureWorks
FROM AdventureWorksBackups
Hinweis: |
---|
Bei einer Datenbank, die das Modell der vollen oder massenprotokollierten Wiederherstellung verwendet, erfordert SQL Server 2005 in den meisten Fällen die Sicherung des Protokollfragments, bevor die Datenbank wiederhergestellt wird. Weitere Informationen finden Sie unter Sicherungen des Protokollfragments. |
[Anfang der Beispiele]
B. Wiederherstellen vollständiger und differenzieller Datenbanksicherungen
Im folgenden Beispiel wird eine vollständige Datenbanksicherung und anschließend eine differenzielle Sicherung vom Z:\SQLServerBackups\AdventureWorks.bak
-Sicherungsmedium wiederhergestellt, das beide Sicherungen enthält. Die vollständige Datenbanksicherung, die wiederhergestellt werden soll, ist der sechste Sicherungssatz auf dem Medium (FILE = 6
). Die differenzielle Sicherung ist der neunte Sicherungssatz auf dem Medium (FILE = 9
). Sobald die differenzielle Sicherung wiederhergestellt wird, wird die Datenbank wiederhergestellt.
RESTORE DATABASE AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE = 9
RECOVERY;
[Anfang der Beispiele]
C. Wiederherstellen einer Datenbank mit der RESTART-Syntax
Im folgenden Beispiel wird die Option RESTART
zum Neustart eines RESTORE
-Vorgangs verwendet, der durch einen Stromausfall des Servers unterbrochen wurde.
-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE AdventureWorks
FROM AdventureWorksBackups
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks
FROM AdventureWorksBackups WITH RESTART
[Anfang der Beispiele]
D. Wiederherstellen einer Datenbank und Verschieben von Dateien
Im folgenden Beispiel wird eine vollständige Datenbank und ein Transaktionsprotokoll wiederhergestellt. Anschließend wird die wiederhergestellte Datenbank in das Verzeichnis C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
verschoben.
RESTORE DATABASE AdventureWorks
FROM AdventureWorksBackups
WITH NORECOVERY,
MOVE 'AdventureWorks_Data' TO
'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewAdvWorks.mdf',
MOVE 'AdventureWorks_Log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewAdvWorks.ldf'
RESTORE LOG AdventureWorks
FROM AdventureWorksBackups
WITH RECOVERY
[Anfang der Beispiele]
E. Kopieren einer Datenbank mithilfe von BACKUP und RESTORE
Im folgenden Beispiel werden die Anweisungen BACKUP
und RESTORE
verwendet, um eine Kopie der AdventureWorks
-Datenbank zu erstellen. Die MOVE
-Anweisung bewirkt, dass die Daten- und die Protokolldatei an den angegebenen Speicherorten wiederhergestellt werden. Die RESTORE FILELISTONLY
-Anweisung wird verwendet, um die Anzahl und die Namen der Dateien der Datenbank zu bestimmen, die wiederhergestellt werden. Die neue Kopie der Datenbank erhält den Namen TestDB
. Weitere Informationen finden Sie unter RESTORE FILELISTONLY (Transact-SQL).
BACKUP DATABASE AdventureWorks
TO AdventureWorksBackups ;
RESTORE FILELISTONLY
FROM AdventureWorksBackups ;
RESTORE DATABASE TestDB
FROM AdventureWorksBackups
WITH MOVE 'AdventureWorks_Data' TO 'C:\MySQLServer\testdb.mdf',
MOVE 'AdventureWorks_Log' TO 'C:\MySQLServer\testdb.ldf';
GO
[Anfang der Beispiele]
F. Wiederherstellen eines bestimmten Zeitpunktes mithilfe von STOPAT
Im folgenden Beispiel wird eine Datenbank in den am April 15, 2020
um 12:00 AM
bestehenden Status wiederhergestellt und ein Wiederherstellungsvorgang gezeigt, der mehrere Protokolle und mehrere Sicherungsmedien umfasst.
RESTORE DATABASE AdventureWorks
FROM AdventureWorksBackups
WITH NORECOVERY;
RESTORE LOG AdventureWorks
FROM AdventureWorksBackups
WITH RECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE LOG AdventureWorks
FROM AdventureWorksBackups
WITH RECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
[Anfang der Beispiele]
G. Wiederherstellen eines Transaktionsprotokolls bis zu einer Markierung
Im folgenden Beispiel wird das Transaktionsprotokoll bis zur Markierung in der markierten Transaktion mit dem Namen ListPriceUpdate
wiederhergestellt.
USE AdventureWorks
GO
BEGIN TRANSACTION ListPriceUpdate
WITH MARK 'UPDATE Product list prices';
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 1.10
WHERE ProductNumber LIKE 'BK-%';
GO
COMMIT TRANSACTION ListPriceUpdate;
GO
-- Time passes. Regular database
-- and log backups are taken.
-- An error occurs in the database.
USE master
GO
RESTORE DATABASE AdventureWorks
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO
RESTORE LOG AdventureWorks
FROM AdventureWorksBackups
WITH FILE = 4,
RECOVERY,
STOPATMARK = 'ListPriceUpdate';
[Anfang der Beispiele]
H. Wiederherstellen mit der TAPE-Syntax
Im folgenden Beispiel wird eine vollständige Datenbanksicherung von einem TAPE
-Sicherungsmedium wiederhergestellt.
RESTORE DATABASE AdventureWorks
FROM TAPE = '\\.\tape0'
[Anfang der Beispiele]
I. Wiederherstellen mit der FILE- und FILEGROUP-Syntax
Im folgenden Beispiel wird eine Datenbank mit dem Namen MyDatabase
wiederhergestellt, die über zwei Dateien, eine sekundäre Dateigruppe und ein Transaktionsprotokoll verfügt. Für die Datenbank wird das vollständige Wiederherstellungsmodell verwendet.
Die Datenbanksicherung ist der neunte Sicherungssatz im Mediensatz auf einem logischen Sicherungsmedium mit dem Namen MyDatabaseBackups
. Anschließend werden drei Protokollsicherungen, die sich in den nächsten drei Sicherungssätzen (10
, 11
und 12
) im Medium MyDatabaseBackups
befinden, mit WITH NORECOVERY
wiederhergestellt. Nach dem Wiederherstellen der letzten Protokollsicherung wird die Datenbank wiederhergestellt.
Hinweis: |
---|
Die Wiederherstellung wird in einem separaten Schritt ausgeführt, um zu vermeiden, dass sie zu früh ausgeführt wird, d. h., bevor alle Protokollsicherungen wiederhergestellt wurden. |
Beachten Sie, dass in der RESTORE DATABASE
-Anweisung zwei Typen von FILE
-Optionen vorhanden sind. Mit den FILE
-Optionen vor dem Namen des Sicherungsmediums werden die logischen Dateinamen der Datenbankdateien angegeben, die aus dem Sicherungssatz wiederhergestellt werden sollen, beispielsweise FILE = 'MyDatabase_data_1'
. Dieser Sicherungssatz ist nicht die erste Datenbanksicherung im Mediensatz. Daher wird seine Position im Mediensatz mit der Option FILE
in der WITH
-Klausel angegeben: FILE=9
.
RESTORE DATABASE MyDatabase
FILE = 'MyDatabase_data_1',
FILE = 'MyDatabase_data_2',
FILEGROUP = 'new_customers'
FROM MyDatabaseBackups
WITH
FILE = 9,
NORECOVERY;
GO
-- Restore the log backups.
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 10,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 11,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 12,
NORECOVERY;
GO
--Recover the database:
RESTORE DATABASE MyDatabase WITH RECOVERY;
GO
[Anfang der Beispiele]
J. Wiederherstellen aus einem Datenbanksnapshot
Im folgenden Beispiel wird eine Datenbank aus einem Datenbanksnapshot wiederhergestellt. In diesem Beispiel wird davon ausgegangen, dass derzeit in der Datenbank nur ein Snapshot vorhanden ist. Ein Beispiel zum Erstellen dieses Datenbanksnapshots finden Sie unter Vorgehensweise: Erstellen eines Datenbanksnapshots (Transact-SQL).
Hinweis: |
---|
Durch das Wiederherstellen eines Snapshots werden alle Volltextkataloge gelöscht. |
USE master
RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
Weitere Informationen finden Sie unter Zurückkehren zu einem Datenbanksnapshot.
[Anfang der Beispiele]
Siehe auch
Verweis
BACKUP (Transact-SQL)
RESTORE REWINDONLY (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)
Andere Ressourcen
Sichern und Wiederherstellen von Volltextkatalogen
Sichern und Wiederherstellen replizierter Datenbanken
Implementieren von Wiederherstellungsszenarien für SQL Server-Datenbanken
Mediensätze, Medienfamilien und Sicherungssätze
Grundlegendes zur Funktionsweise der Wiederherstellung von Sicherungen in SQL Server
Anzeigen von Informationen zu Sicherungen
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
12. Dezember 2006 |
|
14. April 2006 |
|