Reparieren von Datenbankbeschädigungen: GAM, SGAM, und IAM in SQL Server

Summary: In diesem Artikel erfahren Sie, wie Sie kritische Datenbankbeschädigungen in SQL Server mit GAM-, SGAM- und IAM-Seiten diagnostizieren und reparieren können. Sie erfahren etwas über häufige Fehler, erhalten Einblicke in Diagnose-, Reparatur- und Präventionsstrategien und Lösungen wie Datenrettung oder Reparatursoftware von Drittanbietern. Außerdem erhalten Sie Tipps, wie Sie zukünftige Schäden verhindern können.

In SQL Server ist eine Seite die Grundeinheit für die Speicherung von Daten, und Extents sind die Grundeinheit, die eine effiziente Verwaltung von Seiten ermöglicht. Ein Extent ist eine Kombination aus acht physikalisch verbundenen Seiten. In SQL Server gibt es zwei Arten von Zuweisungsmaps, die zur Aufzeichnung des Zuweisungsumfangs verwendet werden – Global Allocation MAP (GAM) und Shared Global Allocation MAP (SGAM). Es gibt noch eine weitere Seite, die Index Allocation Map (IAM), die die von einer Zuweisungseinheit verwendeten Extents in dem 4 GB großen Teil der SQL Server-Datenbankdatei aufzeichnet. Manchmal werden diese SQL-Datenbankseiten aus verschiedenen Gründen beschädigt, so dass die beschädigte Datenbank repariert werden muss. In diesem Artikel erfahren Sie, wie Sie Probleme mit GAM-, SGAM- und IAM-Seiten in SQL Server diagnostizieren und reparieren können

Was sind die Seiten GAM, SGAM und IAM?

Global Allocation Pages (GAM) sind für die Verwaltung von Zuweisungsbereichen in der Datenbank zuständig. Sie helfen bei Bedarf bei der Identifizierung freier Extents.

Shared Allocation Map (SGAM) Seiten sind wie granulare Karten. Sie verwalten die Zuordnung von Extents zu bestimmten Dateigruppen in der Datenbank.

Index Allocation Map (IAM) Seiten sind spezielle interne Seiten, die wie ein Register für die Datenspeicherung angemeldet sind. Sie verfolgen die Position der Datenseite in der Datenbankdatei.

Wie diagnostizieren Sie GAM-, SGAM- und IAM-Seitenfehler?

Wenn Sie Abfragen ausführen, erhalten Sie möglicherweise eine ähnliche Fehlermeldung wie diese:

Msg 8905, Ebene 16, Status 1, Zeile 1
Extent (5678:1234) in Datenbank ID 10 ist in der GAM als zugewiesen markiert, aber keine SGAM oder IAM hat ihn zugewiesen.

Dieser Fehler zeigt an, dass die GAM-Seite beschädigt ist.

Eine andere Möglichkeit, Fehler in Datenbankseiten zu erkennen, ist die Verwendung des DBCC CHECKDB-Befehls (siehe das folgende Beispiel).

DBCC CHECKDB (stellardb)
GO

Es gibt einen undokumentierten Befehl namens dbcc PAGE. Dies ist ein interner Befehl, der von Microsoft verwendet wird. Sie können ihn jedoch verwenden, um die Datenbankseiten zu diagnostizieren. Hier ist der Code zur Verwendung dieses Befehls.

DBCC PAGE (stellardb, 1, 354, WITH NOHEADER)
GO

Hier ist stellardb der Name der Datenbank, 1 ist die Dateinummer und 354 die Seitenzahl.

Wie behebt man eine Beschädigung der GAM-, SGAM- und IAM-Seiten in der SQL-Datenbank?

Hier finden Sie einige Lösungen zur Behebung von GAM-, SGAM- und IAM-Seitenfehlern sowie von Beschädigungen in der SQL-Datenbank.

Datenbank aus Sicherung wiederherstellen

Wenn Sie eine Sicherungskopie haben, können Sie diese verwenden, um Ihre Daten wiederherzustellen. Hier sind die Schritte zur Wiederherstellung einer Datenbanksicherung mit SQL Server Management Studio (SSMS):

Verwenden Sie den Befehl DBCC CHECKDB

Um die GAM-, SGAM- und IAM-Seitenfehler und die Datenbankbeschädigung zu beheben, können Sie den Befehl DBCC CHECKDB in SQL Server verwenden. Hier ist der Code zur Reparatur der Datenbank mit dem Befehl DBCC CHECKDB:

USE master;
GO
ALTER DATABASE stellar
SET SINGLE_USER
MIT SOFORTIGEM ROLLBACK;
GO
DBCC CHECKDB('stellar',REPAIR_REBUILD)
GO
ALTER DATABASE stellar
SET MULTI_USER;
GO

Der obige Code greift auf die Master-Systemdatenbank zu, versetzt die Datenbank in den Einzelbenutzermodus, repariert die Datenbank und versetzt sie wieder in den Mehrbenutzermodus.

Verwenden Sie SQL-Datenbankreparatursoftware von Drittanbietern

Wenn der Befehl DBCC CHECKDB die Datenbank nicht reparieren kann, können Sie eine SQL-Reparatursoftware eines Drittanbieters verwenden, z.B. Stellar Repair for MS SQL. Diese Software kann SQL Server-Datenbankdateien (mdf und ndf) auf einfache Weise reparieren. Sie kann alle Daten aus beschädigten Datenbankdateien wiederherstellen und sie in einer neuen Datenbankdatei oder in verschiedenen anderen Formaten speichern.

Um die Datenbank mit Stellar Repair for MS SQL zu reparieren, gehen Sie wie folgt vor:

Hinweis: Nehmen Sie die Datenbank offline, bevor Sie den Reparaturvorgang starten.

Bewährte Verfahren zur Vermeidung von GAM-, SGAM- und IAM-Site-Korruption

Hier finden Sie einige nützliche Tipps, die Sie befolgen können, um Schäden an den SQL Server-Datenbankseiten zu vermeiden:

Fazit

Wenn die GAM-, SGAM- oder IAM-Seiten in der Datenbank beschädigt sind, ist es am einfachsten, die Datenbank vom letzten Backup wiederherzustellen. Wenn das Backup veraltet ist oder nicht funktioniert, können Sie versuchen, die Datenbank mit dem Befehl DBCC CHECKDB zu reparieren. In manchen Situationen funktioniert der DBCC CHECKDB-Befehl nicht. In diesem Fall können Sie Stellar Repair for MS SQL verwenden. Diese Software kann die beschädigte Datenbank einfach reparieren und alle Objekte mit vollständiger Integrität wiederherstellen.

Related Post

Exit mobile version