Wiederherstellung von Seiten (SQL Server)
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:
Vorbereitungen
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.
Nicht für alle Fehler für einzelne Seiten ist eine Wiederherstellung erforderlich. 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.
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 von allen Datendateien (die Startseite der Datei)
Seite 1:9 (die Startseite 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. Die Protokollsicherung kann durch jede beliebige Offlineseite verhindert werden. 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 ist bei der massenprotokollierten Wiederherstellung grundsätzlich nicht möglich.
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, geht entweder die Arbeit seit der letzten Protokollsicherung verloren, oder Sie müssen versuchen, DBCC mit der Option REPAIR_ALLOW_DATA_LOSS auszuführen.
Empfehlungen
Szenarien für die Seitenwiederherstellung
Offlineseitenwiederherstellung
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, Sie müssen jedoch zuerst eine Protokollfragmentsicherung erstellen (indem Sie das Transaktionsprotokoll mithilfe von RESTORE WITH NORECOVERY sichern).
Bei der Seitenwiederherstellung werden die verbesserten Fehlerberichts- und Nachverfolgungsfunktionen auf Seitenebene (einschließlich Seitenprüfsummen) verwendet. Seiten, die aufgrund der Prüfsumme beschädigt sein müssen oder für die ein unterbrochener Schreibvorgang festgestellt wurde, beschädigte Seiten, können durch einen Seitenwiederherstellungsvorgang 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, in der die Seite enthalten ist, auf den Stand der aktuellen Protokolldatei zu bringen. Wie bei der Dateiwiederherstellung wird die Rollforwardgruppe auch bei der Seitenwiederherstellung durch einen einzelnen Protokollwiederholungsschritt weitergegeben. Damit die Seitenwiederherstellung erfolgreich ist, müssen die wiederhergestellten Seiten zu einem Status wiederhergestellt werden, der mit der Datenbank konsistent ist.
Sicherheit
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 in einer festen Datenbankrolle nur bei unbeschädigten und zugänglichen Datenbanken geprüft 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.
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
Verwenden Sie die RESTORE -Anweisung, um eine kennwortgeschützte Sicherung wiederherzustellen.
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
Dieser Abschnitt zeigt die an der Wiederherstellung beteiligten Sicherungssätze an.Header 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 Position des Sicherungssatzes auf dem Volume. Erste LSN Die Protokollfolgenummer (Log Sequence Number, LSN) der ersten Transaktion im Sicherungssatz. Bei Dateisicherungen leer. Erste LSN Die Protokollfolgenummer (Log Sequence Number, LSN) der letzten Transaktion im Sicherungssatz. Bei Dateisicherungen leer. 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. Ablauf Datum und Uhrzeit des Zeitpunkts, an dem der Sicherungssatz verfällt. Klicken Sie auf Überprüfen , um die Integrität der Sicherungsdateien zu überprüfen, die zum Ausführen der Seitenwiederherstellung benötigt werden.
Klicken Sie auf Datenbankseiten prüfen , um beschädigte Seiten zu identifizieren, dabei muss das Kontrollkästchen Datenbankaktiviert sein. 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. Klicken Sie optional auf Überprüfen , um zu überprüfen, dass die Sicherungen lesbar 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
Zum Angeben einer Seite in einer RESTORE DATABASE-Anweisung benötigen Sie die Datei-ID der Datei, die die Seite enthält, und die Seiten-ID der Seite. 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 in der Option PAGE verwendeten Parametern finden Sie unter RESTORE-Argumente (Transact-SQL). Weitere Informationen zur RESTORE DATABASE-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 Anzeigen des SQL Server-Fehlerprotokolls (SQL Server Management Studio) Ereignisverfolgungen Überwachen und Reagieren auf Ereignisse DBCC DBCC (Transact-SQL) WMI provider (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. Listen Sie die Seiten-IDs der wiederherzustellenden Seiten mit der PAGE-Klausel der RESTORE DATABASE-Anweisung auf.
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 Onlinerollforward der Datei, die die Seite enthält, kann an der Wiederholungsziel-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 NORECOVERY
wiederhergestellt. Anschließend werden zwei Protokollsicherungen mit NORECOVERY
angewendet, gefolgt von der Sicherung des Protokollfragments, 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
, 916
und 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
Weitere Informationen
RESTORE (Transact-SQL)
Anwenden von Transaktionsprotokollsicherungen (SQL Server)
Verwalten der suspect_pages-Tabelle (SQL Server)
Sichern und Wiederherstellen von SQL Server-Datenbanken