Wiederherstellung von Seiten (SQL Server)

Gilt für:SQL Server

In diesem Thema wird beschrieben, wie Seiten in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL wiederhergestellt werden. 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

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, die die vollständigen oder massenprotokollierten Wiederherstellungsmodelle verwenden. 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
    Alle Editionen von SQL Server unterstützen das Wiederherstellen von Seiten, 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 Onlineseitenwiederherstellungen, obwohl sie Offlinewiederherstellung verwenden, wenn die Datenbank derzeit 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

  1. Stellen Sie eine Verbindung mit der entsprechenden Instanz des SQL Server-Datenbankmoduls im Objekt-Explorer her, und klicken Sie auf den Servernamen, um die Serverstruktur zu erweitern.

  2. Erweitern Sie Datenbanken. Wählen Sie je nach Datenbank entweder eine Benutzerdatenbank aus, oder erweitern Sie Systemdatenbanken, und wählen Sie eine Systemdatenbank aus.

  3. 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> (für Transaktionsprotokolle).
    Typ Der Typ der ausgeführten Sicherung: Vollständig, Differenzielloder Transaktionsprotokoll.
    Server Der Name der Datenbankmodulinstanz, die den Sicherungsvorgang ausgeführt hat.
    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.

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

  5. 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 Manage the suspect_pages Table (SQL Server).

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

  7. 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 Parametern der PAGE-Option finden Sie unter RESTORE-Argumente (Transact-SQL). Weitere Informationen zur SYNTAX DER RESTORE DATABASE finden Sie unter RESTORE (Transact-SQL).For more information about the RESTORE DATABASE syntax, see RESTORE (Transact-SQL).

So stellen Sie Seiten wieder her

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

  3. Wenden Sie die aktuellsten differenziellen Sicherungen an.

  4. Wenden Sie die nachfolgenden Protokollsicherungen an.

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

  6. 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 NORECOVERYangewendet, gefolgt von der Sicherung des Protokollfragments, die mit RECOVERYwiederhergestellt 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

Weitere Informationen

RESTORE (Transact-SQL)
Anwenden von Transaktionsprotokollsicherungen (SQL Server)
Verwalten der suspect_pages-Tabelle (SQL Server)
Sichern und Wiederherstellen von SQL Server-Datenbanken