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
In diesem Thema wird beschrieben, wie Sie Seiten in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL wiederherstellen können. Das Ziel einer Seitenwiederherstellung besteht darin, eine oder mehrere beschädigte Seiten wiederherzustellen, ohne dazu die gesamte Datenbank wiederherstellen zu müssen. In der Regel wurden Seiten, die wiederhergestellt werden sollen, aufgrund eines Fehlers beim Zugriff auf die Seite als fehlerverdächtig gekennzeichnet. Fehlerverdächtige Seiten werden in der suspect_pages -Tabelle in der msdb -Datenbank identifiziert.
In diesem Thema
Vorbereitungen:
Wiederherstellen von Seiten mit:
Bevor Sie beginnen
Wann ist eine Seitenwiederherstellung sinnvoll?
Eine Seitenwiederherstellung ist zum Reparieren einzelner beschädigter Seiten vorgesehen. Die Wiederherstellung weniger Einzelseiten erfolgt möglicherweise schneller als eine Dateiwiederherstellung, sodass sich die Menge der Daten reduziert, die während der Wiederherstellung offline sind. Wenn Sie jedoch mehrere Seiten in einer Datei wiederherstellen müssen, erweist sich die Wiederherstellung der vollständigen Datei in der Regel als effizienter. Wenn auf einem Gerät sehr viele Seiten beschädigt sind, kann das ein Hinweis auf einen Gerätefehler sein. In diesem Fall sollten Sie die Datei nach Möglichkeit an einem anderen Speicherort wiederherstellen und das Gerät reparieren.
Außerdem erfordern nicht alle Seitenfehler eine Wiederherstellung. In zwischengespeicherten Daten, z. B. einem sekundären Index, kann ein Problem auftreten, das durch das Neuberechnen der Daten behoben werden kann. Wenn der Datenbankadministrator beispielsweise einen sekundären Index löscht und erneut erstellt, werden die beschädigten Daten, obwohl sie repariert sind, nicht als solche in der suspect_pages -Tabelle angezeigt.
Beschränkungen und Einschränkungen
Die Seitenwiederherstellung gilt für SQL Server-Datenbanken, für die das vollständige oder massenprotokollierte Wiederherstellungsmodell verwendet wird. Die Seitenwiederherstellung wird nur für Dateigruppen mit Lese-/Schreibzugriff unterstützt.
Es können nur Datenbankseiten wiederhergestellt werden. Die Seitenwiederherstellung kann nicht zum Wiederherstellen der folgenden Elemente verwendet werden:
Transaktionsprotokoll
Zuordnungsseiten: GAM-Seiten (Global Allocation Map), SGAM-Seiten (Shared Global Allocation Map) und PFS-Seiten (Page Free Space).
Seite 0 aller Datendateien (die Bootseite der Datei)
Seite 1:9 (die Bootseite der Datenbank)
Volltextkatalog
Wenn für eine Datenbank das massenprotokollierte Wiederherstellungsmodell verwendet wird, gelten für die Seitenwiederherstellung die folgenden zusätzlichen Bedingungen:
Wenn die Dateigruppen- oder Seitendaten offline sind, gestaltet sich die Sicherung bei massenprotokollierten Daten problematisch, da die offline verfügbaren Daten nicht im Protokoll erfasst sind. Jede Offlineseite kann das Sichern des Protokolls verhindern. In diesen Fällen empfiehlt es sich, DBCC REPAIR zu verwenden, da dadurch weniger Daten verloren gehen als bei der Wiederherstellung der letzten Sicherung.
Wenn eine Protokollsicherung einer massenprotokollierten Datenbank eine beschädigte Seite erkennt, schlägt der Vorgang fehl, es sei denn, WITH CONTINUE_AFTER_ERROR wurde angegeben.
Die Seitenwiederherstellung funktioniert bei der massenprotokollierten Wiederherstellung im Allgemeinen nicht.
Die bewährte Methode zum Ausführen einer Seitenwiederherstellung besteht darin, für die Datenbank das vollständige Wiederherstellungsmodell festzulegen und eine Protokollsicherung zu versuchen. Wenn die Protokollsicherung ausgeführt werden kann, können Sie die Seitenwiederherstellung fortsetzen. Wenn die Protokollsicherung fehlschlägt, müssen Sie entweder die seit der letzten Protokollsicherung geleistete Arbeit verlieren, oder Sie müssen versuchen, DBCC mit der Option REPAIR_ALLOW_DATA_LOSS auszuführen.
Empfehlungen
Szenarien für die Seitenwiederherstellung
Wiederherstellung von Offlineseiten
In allen Editionen von SQL Server wird das Wiederherstellen von Seiten unterstützt, wenn die Datenbank offline ist. Bei einer Offlinewiederherstellung von Seiten ist die Datenbank offline, während beschädigte Seiten wiederhergestellt werden. Am Ende der Wiederherstellungssequenz wird die Datenbank wieder online geschaltet.Onlineseitenwiederherstellung
SQL Server Enterprise Edition unterstützt Online-Seitenwiederherstellungen, aber es wird die Offlinewiederherstellung verwendet, wenn die Datenbank gerade offline ist. In den meisten Fällen kann eine beschädigte Seite wiederhergestellt werden, wenn die Datenbank einschließlich der Dateigruppen, für die eine Seite wiederhergestellt wird, online bleibt. Wenn die primäre Dateigruppe online ist, selbst wenn eine oder mehrere der sekundären Dateigruppen offline sind, werden Seitenwiederherstellungen in der Regel online durchgeführt. In Einzelfällen ist für beschädigte Seiten jedoch eine Offlinewiederherstellung erforderlich. Beispielsweise können Schäden an bestimmten, wichtigen Seiten dazu führen, dass die Datenbank nicht gestartet wird.Warnung
Wenn auf beschädigten Seiten wichtige Datenbankmetadaten gespeichert sind, schlagen erforderliche Updates der Metadaten während einer Onlineseitenwiederherstellung möglicherweise fehl. In diesem Fall können Sie eine Offlineseitenwiederherstellung durchführen, aber zuerst müssen Sie eine Tail-Protokollsicherung erstellen (indem Sie das Transaktionsprotokoll mit RESTORE WITH NORECOVERY sichern).
Bei der Seitenwiederherstellung werden die verbesserten Fehlerberichts- und Nachverfolgungsfunktionen auf Seitenebene (einschließlich Seitenprüfsummen) verwendet. Seiten, die durch eine Prüfsummenprüfung oder einen unvollständigen Schreibvorgang als beschädigt erkannt werden, beschädigte Seiten, können durch eine Seitenwiederherstellung wiederhergestellt werden. Es werden nur explizit angegebene Seiten wiederhergestellt. Jede angegebene Seite wird durch die Kopie dieser Seite aus der angegebenen Datensicherung ersetzt.
Wenn Sie die nachfolgenden Protokollsicherungen wiederherstellen, werden diese nur auf Datenbankdateien angewendet, die mindestens eine Seite enthalten, die wiederhergestellt wird. Es muss eine ununterbrochene Kette von Protokollsicherungen auf die letzte vollständige oder differenzielle Wiederherstellung angewendet werden, um die Dateigruppe, die die Seite enthält, bis zur aktuellen Protokolldatei weiterzuführen. Wie bei einer Dateiwiederherstellung wird der Rollforwardsatz mit einem einzigen Protokoll-Redo-Durchlauf fortgesetzt. Damit die Seitenwiederherstellung erfolgreich ist, müssen die wiederhergestellten Seiten zu einem Status wiederhergestellt werden, der mit der Datenbank konsistent ist.
Sicherheit
Berechtigungen
Wenn die wiederherzustellende Datenbank nicht existiert, muss der Benutzer über die Berechtigungen CREATE DATABASE verfügen, um RESTORE ausführen zu können. Wenn die Datenbank vorhanden ist, RESTORE gelten standardmäßig Berechtigungen für Mitglieder der festen Serverrollen sysadmin und dbcreator sowie für den Besitzer (dbo) der Datenbank (bei der Option FROM DATABASE_SNAPSHOT ist die Datenbank immer vorhanden).
RESTORE Berechtigungen werden Rollen zugewiesen, in denen Mitgliedschaftsinformationen immer für den Server verfügbar sind. Da die Mitgliedschaft in einer festen Datenbankrolle nur überprüft werden kann, wenn die Datenbank zugänglich und unbeschädigt ist, was bei der Ausführung von RESTORE nicht immer der Fall ist, verfügen Mitglieder der festen Datenbankrolle db_owner nicht über die Berechtigungen RESTORE.
Verwendung von SQL Server Management Studio
Ab SQL Server 2016 (13.x) unterstützt SQL Server Management Studio Seitenwiederherstellungen.
So stellen Sie Seiten wieder her
Verbinden Sie sich mit der entsprechenden Instanz der SQL Server-Datenbank-Engine und klicken Sie im Objekt-Explorer auf den Servernamen, um die Serverstruktur zu erweitern.
Erweitern Sie Datenbanken. Wählen Sie je nach Datenbank entweder eine Benutzerdatenbank aus, oder erweitern Sie Systemdatenbanken, und wählen Sie eine Systemdatenbank aus.
Klicken Sie mit der rechten Maustaste auf die Datenbank, zeigen Sie auf Aufgaben, zeigen Sie auf Wiederherstellen, und klicken Sie anschließend auf Seite. Daraufhin wird das Dialogfeld Seite wiederherstellen geöffnet.
Wiederherstellen
Über diesen Abschnitt führen Sie die gleiche Funktion wie mit Wiederherstellen in unter Datenbank wiederherstellen (Seite „Allgemein“)aus.Datenbank
Gibt die Datenbank an, die wiederhergestellt werden soll. Sie können eine neue Datenbank eingeben oder eine vorhandene Datenbank aus der Dropdownliste auswählen. Die Liste umfasst alle Datenbanken auf dem Server, mit Ausnahme der master -Datenbank und der tempdb-Datenbank.Warnung
Zum Wiederherstellen einer kennwortgeschützten Sicherung müssen Sie die RESTORE Anweisung verwenden.
Sicherung des Protokollfragments
Geben Sie unter Sicherungsmedium den Namen der Datei ein, in der die Sicherung des Protokollfragments für die Datenbank gespeichert werden soll, oder wählen Sie diesen aus.Sicherungssätze
In diesem Abschnitt werden die an der Wiederherstellung beteiligten Sicherungssätze angezeigt.Kopfzeile Werte Name Name des Sicherungssatzes. Komponente Die gesicherte Komponente: Datenbank, Datei oder <leer> (bei Transaktionsprotokollen). Typ Der Typ der ausgeführten Sicherung: Vollständig, Differenzielloder Transaktionsprotokoll. Server Name der Instanz der Datenbank-Engine, durch die der Sicherungsvorgang ausgeführt wurde. Datenbank Name der an der Sicherungsoperation beteiligten Datenbank. Position Die Position des Sicherungssatzes im Volume. Erste LSN Die Protokollfolgenummer (Log Sequence Number, LSN) der ersten Transaktion im Sicherungssatz. Für Dateisicherungen leer lassen. Letzte LSN Die Protokollfolgenummer (Log Sequence Number, LSN) der letzten Transaktion im Sicherungssatz. Für Dateisicherungen leer lassen. Prüfpunkt-LSN Protokollsequenznummer (LSN) des letzten Prüfpunkts zum Zeitpunkt der Erstellung der Sicherung. Vollständige LSN Die Protokollfolgenummer (Log Sequence Number, LSN) der neuesten vollständigen Datenbanksicherung. Startdatum Datum und Uhrzeit des Sicherungsbeginns, entsprechend den Ländereinstellungen des Clients. Beendigungsdatum Datum und Uhrzeit des Endes des Sicherungsvorgangs, entsprechend den Ländereinstellungen des Clients. Größe Größe des Sicherungssatzes in Byte. Benutzername Name des Benutzers, der den Sicherungsvorgang ausgeführt hat. Ablaufdatum Datum und Uhrzeit, zu der der Sicherungssatz abläuft. Klicken Sie auf Überprüfen , um die Integrität der Sicherungsdateien zu überprüfen, die zum Ausführen der Seitenwiederherstellung benötigt werden.
Um beschädigte Seiten zu identifizieren, klicken Sie bei korrekter Auswahl der Datenbank im Feld Datenbank auf Datenbankseiten prüfen. Dieser Vorgang dauert lange.
Warnung
Klicken Sie auf Hinzufügen , und geben Sie die Datei-ID und die Seiten-ID der Seiten ein, die wiederhergestellt werden sollen, um bestimmte Seiten wiederherzustellen, die nicht beschädigt sind.
Das Seitenraster wird verwendet, um die wiederherzustellenden Seiten zu identifizieren. Zu Beginn wird dieses Raster von der Systemtabelle suspect_pages aufgefüllt. Um Seiten aus dem Raster hinzuzufügen oder zu entfernen, klicken Sie auf Hinzufügen bzw. auf Entfernen. Weitere Informationen finden Sie unter Verwalten der suspect_pages-Tabelle (SQL Server).
Im Raster Sicherungssätze sind die Sicherungssätze im Standardwiederherstellungsplan aufgeführt. Optional können Sie auf Überprüfen klicken, um zu überprüfen, ob die Sicherungen lesbar sind und die Sicherungssätze vollständig sind, ohne sie wiederherzustellen. Weitere Informationen finden Sie unter RESTORE VERIFYONLY (Transact-SQL).
Seiten
Um die im Seitenraster aufgeführten Seiten wiederherzustellen, klicken Sie auf OK.
Verwenden von Transact-SQL
Um eine Seite in einer RESTOREDATABASE Anweisung anzugeben, benötigen Sie die Datei-ID der Datei, die die Seite und die Seiten-ID der Seite enthält. Die erforderliche Syntax lautet wie folgt:
RESTORE DATABASE <database_name>
PAGE = '<file: page> [ ,... n ] ' [ ,... n ]
FROM <backup_device> [ ,... n ]
WITH NORECOVERY
Weitere Informationen zu den Parametern der PAGE-Option finden Sie unter RESTORE Arguments (Transact-SQL). Weitere Informationen zur RESTOREDATABASE Syntax finden Sie unter RESTORE (Transact-SQL).
So stellen Sie Seiten wieder her
Rufen Sie die Seiten-IDs der wiederherzustellenden beschädigten Seiten ab. Bei Prüfsummenfehlern oder einem unterbrochenen Schreibvorgang wird die Seiten-ID zurückgegeben, sodass die zum Angeben der Seiten benötigten Informationen zur Verfügung stehen. Sie können die Seiten-ID einer beschädigten Seite mithilfe der folgenden Quellen ermitteln:
Quelle der Seiten-ID Thema msdb..suspect_pages Verwalten der suspect_pages-Tabelle (SQL Server) Fehlerprotokoll SQL Server-Fehlerprotokoll anzeigen (SQL Server Management Studio) Ereignisverfolgungen Überwachen und Reagieren auf Ereignisse DBCC DBCC (Transact-SQL) WMI-Anbieter Konzepte des WMI-Anbieters für Serverereignisse Beginnen Sie die Seitenwiederherstellung mit einer vollständigen Datenbanksicherung, einer Dateisicherung oder einer Dateigruppensicherung, die die Seite enthält. Verwenden Sie in der RESTOREDATABASE Anweisung die PAGE-Klausel, um die Seiten-IDs aller zu wiederherstellenden Seiten auflisten.
Wenden Sie die aktuellsten differenziellen Sicherungen an.
Wenden Sie die nachfolgenden Protokollsicherungen an.
Erstellen Sie eine neue Protokollsicherung der Datenbank, die die letzte LSN der wiederhergestellten Seiten enthält, d. h. den Zeitpunkt, an dem die zuletzt wiederhergestellte Seite offline geschaltet wurde. Die letzte LSN, die im Rahmen der ersten Wiederherstellung innerhalb der Sequenz festgelegt wird, ist die Wiederholungsziel-LSN. Das Online-Rollforward der Datei, die die Seite enthält, kann bei der Redo-Ziel-LSN anhalten. Die aktuelle Wiederholungsziel-LSN einer Datei entnehmen Sie der redo_target_lsn-Spalte von sys.master_files. Weitere Informationen finden Sie unter sys.master_files (Transact-SQL).
Stellen Sie die neue Protokollsicherung wieder her. Sobald diese neue Protokollsicherung angewendet wird, ist die Seitenwiederherstellung abgeschlossen, und die Seiten können verwendet werden.
Hinweis
Diese Sequenz erfolgt analog zur Dateiwiederherstellungssequenz. Seiten- und Dateiwiederherstellungen können beide als Bestandteil derselben Sequenz ausgeführt werden.
Beispiel (Transact-SQL)
Im folgenden Beispiel werden vier beschädigte Seiten der Datei B mit NORECOVERYwiederhergestellt. Anschließend werden zwei Protokollsicherungen mit NORECOVERY eingespielt, danach die Endprotokollsicherung, die mit RECOVERY wiederhergestellt wird. Im folgenden Beispiel wird eine Onlinewiederherstellung ausgeführt. In diesem Beispiel lautet die Datei-ID der Datei B : 1. Die Seiten-IDs der beschädigten Seiten lauten 57, 202, 916und 1016.
RESTORE DATABASE [<database>] PAGE='1:57, 1:202, 1:916, 1:1016'
FROM DISK = '<file_backup_of_file_B>'
WITH NORECOVERY;
RESTORE LOG [<database>] FROM [<log_backup>]
WITH NORECOVERY;
RESTORE LOG [<database>] FROM [<log_backup>]
WITH NORECOVERY;
BACKUP LOG [<database>] TO [<new_log_backup>];
RESTORE LOG [<database>] FROM [<new_log_backup>] WITH RECOVERY;
GO
Siehe auch
RESTORE (Transact-SQL)
Anwenden von Transaktionsprotokollsicherungen (SQL Server)
Verwalten der suspect_pages-Tabelle (SQL Server)
Sichern und Wiederherstellen von SQL Server-Datenbanken