Wie behebt man eine Seitenbeschädigung in SQL Server?

Summary: In diesem Beitrag werden wir über die Grundursache für die Beschädigung der Seitenebene in SQL Server sprechen. Wir werden auch die Möglichkeiten zur Behebung der Beschädigung und Wiederherstellung der Datenbank diskutieren. Außerdem erfahren Sie etwas über eine SQL-Datenbankreparatursoftware, mit der Sie eine beschädigte Datenbank leicht reparieren und alle Objekte wiederherstellen können.

Datenbanken können jederzeit beschädigt werden, was für Datenbankadministratoren ein besorgniserregendes Problem darstellt, da dadurch alle wichtigen Daten auf dem SQL-Server gefährdet sind. Außerdem werden die Daten unzugänglich, was sich auf den Arbeitsablauf des Unternehmens auswirkt. Daher ist es wichtig, die Beschädigung sofort zu beheben. Genauso wichtig ist es jedoch, die Ursachen der Korruption zu verstehen, da sie sonst erneut auftreten kann. In diesem Blog finden Sie wichtige Informationen darüber, wie Sie die Beschädigung von Seiten in SQL Server beheben können.

Ursachen für die Beschädigung der SQL Server-Ebene

Hier sind einige wichtige Gründe, die zu einer Beschädigung der SQL Server-Datenbank führen können.

  1. Softwarefehler im SQL Server-Programm: In diesem Fall werden die Daten schlecht auf die Festplatte geschrieben. Sehen Sie sich diese Microsoft-Dokumente an:

Wir können diese Art von Problemen vermeiden, indem wir das letzte kumulative Update (CU) der SQL Server-Version installieren.

  1. Speicherprobleme: Es handelt sich um Hardwareprobleme, die das gesamte System und nicht nur den MS SQL Server betreffen können. Es gibt Programme zur Überprüfung der Korrektheit der Daten im Speicher.
  2. Probleme mit dem E/A-Subsystem: In diesem Fall ist es nicht einfach, die Ursache des Problems zu verstehen, da das Speichersystem eine komplizierte Architektur aufweisen kann. Bevor wir beispielsweise auf die physische Festplatte schreiben, müssen wir möglicherweise ein Netzwerk durchqueren oder wir haben einen Festplatten-Controller und seine Treiber. Jede dieser Komponenten kann ausfallen.
  3. Plötzliches Herunterfahren des Servers: Es besteht ein erhebliches Risiko, dass die Datenbank beschädigt wird, wenn der Server aus irgendeinem Grund plötzlich ausfällt. Dies kann durch einen physischen Ausfall des Servers oder durch Strommangel geschehen.

Wie erkennt man Beschädigungen auf Seitenebene in SQL Server?

MS SQL Server-Datenbanken bestehen aus 8-KB-Seiten mit Daten. Acht physisch zusammenhängende Seiten bilden eine Erweiterung, die 64 KB groß ist. Seitenbeschädigung bedeutet, dass eine oder mehrere Seiten falsche Werte enthalten.

Wenn die Datenbank beschädigt ist, können wir dies auf drei Arten überprüfen:

1. Die Ausführung der SELECT-Anweisung auf die beschädigte Tabelle zeigt einen Fehler

In diesem Fall wird eine Fehlermeldung angezeigt:

2. Führen Sie die Anweisung DBCC CHECKDB aus

Dieser Befehl prüft die physische und logische Integrität von Datenbankobjekten, Indexbeziehungen und andere Strukturprüfungen. Geben Sie einfach DBCC CHECK mit dem Namen der Datenbank in runden Klammern ein.

In diesem Fall wird der Fehler angezeigt:

3. Führen Sie SELECT auf der Tabelle [msdb].[dbo].[suspect_pages] aus

Der SELECT-Befehl gibt ein Raster mit einer Zeile für jede beschädigte Seite zurück. In diesem Fall können wir sehen, dass in der Datenbank mit ID = 31 die Seite 1:368 beschädigt ist.

Wie behebt man eine Beschädigung auf Seitenebene in SQL Server?

Hier haben wir zwei verschiedene Möglichkeiten zur Reparatur und Wiederherstellung der Datenbank erwähnt.

1. Manuelle Wiederherstellung über T-SQL-Befehle

Hinweis: Erstellen Sie eine Sicherungskopie der Datenbanken und/oder eine Kopie der physischen Dateien, bevor Sie fortfahren. Der manuelle Prozess ist riskant.

Um mit der Wiederherstellung manuell über T-SQL-Befehle fortzufahren, um die Seitenbeschädigung im SQL-Server zu beheben, folgen Sie den unten stehenden Anweisungen.

Verwenden Sie den undokumentierten Befehl DBCC IND, um sicherzustellen, dass Seite 368 eine Datenseite ist.

DBCC IND('Wiederherstellung_test',Person,-1)

Dieser Befehl zeigt alle Seiten an, die sich auf die im zweiten Parameter angegebene Tabelle beziehen, mit den Informationen, die sich auf die Art der Seite beziehen. Im folgenden Beispiel,

Um die in Seite 1:368 enthaltenen Daten anzuzeigen, können wir die Datei recovery_test.mdf mit einem Hex-Editor öffnen und zum Offset 2e0000 gehen.

Das rote Zeichen ‘b’ (siehe Bild unten) sieht verdächtig aus, da mein Name “Luca” und nicht “Lucb” lautet.

2. Verwenden Sie den Befehl DBCC PAGE:

Um das Ergebnis des DBCC PAGE-Befehls zu erhalten, muß zunächst das Trace-Flag 3604 gesetzt werden.

DBCC TRACEON (3604)
DBCC PAGE('Recovery_test',1,368,2) WITH TABLERESULTS

Die erforderlichen Parameter sind:

Die Werte für den Parameter printopt sind:

Die angezeigten Daten sind dieselben.

Wir müssen den Zeichenwert vom Hex-Wert 62 (b) in den Hex-Wert 61 (a) ändern.

Wir können einen anderen undokumentierten Befehl verwenden, nämlich den Befehl DBCC WRITEPAGE. Dies ist ein leistungsfähiger Befehl, mit dem man direkt auf eine Seite schreiben kann.

Um den Befehl DBCC WRITEPAGE zu verwenden, benötigen wir die folgenden Informationen:

Versetzen Sie die Datenbank zunächst in den SINGLE_USER-Modus:

ALTER DATABASE recovery_test SET SINGLE_USER WITH ROLLBACK IMMEDIATE

Führen Sie dann den Befehl WRITEPAGE aus:

DBCC WRITEPAGE ('recovery_test', 1, 368, 116, 1, 0x61,1)

Führen Sie es nun erneut aus, um zu sehen, ob sich die Daten geändert haben:

DBCC TRACEON (3604)
DBCC PAGE('Recovery_test',1,368,2) WITH TABLERESULTS

Ja, die Daten haben sich geändert.

Versetzen Sie die Datenbank in den MULTI_USER-Modus:

ALTER DATABASE recovery_test SET MULTI_USER WITH ROLLBACK IMMEDIATE

Überprüfen Sie den Gesundheitszustand der Datenbank:

DBCC CHECKDB ('recovery_test')

Aus dem Protokoll geht hervor, dass keine Fehler aufgetreten sind. Das bedeutet, dass die Datenbank nicht mehr beschädigt ist.

Reparieren Sie die Datenbank mit Stellar Repair für MS SQL

Bedenken wir, dass das Problem, das wir manuell gelöst haben, ein bemerkenswert einfacher Fall ist. Aber die Reparatur von komplexen Korruptionsfällen erfordert fortgeschrittene Kenntnisse und birgt das Risiko von mehr Datenschäden. Eine spezielle Anwendung wie Stellar Repair for MS SQL kann jedoch das gleiche Problem auf sichere und schnelle Weise lösen. Nur ein paar einfache Schritte sind erforderlich, um eine beschädigte Datenbank wiederherzustellen. Diese sind:

Die Datenbankstruktur wird zur Reparatur gescannt. Ein Fortschrittsbalken zeigt den Fortschritt des Auftrags an.

Zum Abschluss

Die SQL-Datenbank wird aus einer Vielzahl von Gründen beschädigt. In diesem Beitrag haben wir die Ursachen für eine Beschädigung auf Seitenebene in SQL Server besprochen. Wir haben auch gesehen, wie man die Beschädigung in der Datenbank erkennt und wie man die beschädigte Datenbank manuell über T-SQL-Befehle und mit SQL-Reparatursoftware repariert. Die Software kann eine lobenswerte Arbeit leisten, um das Problem zu lösen und die Datenbank wieder in einen perfekten Betriebszustand zu bringen.

Related Post

Exit mobile version