Verstehen und Verwalten der suspect_pages-Tabelle
Aktualisiert: 05. Dezember 2005
SQL Server 2005 verwaltet Informationen zu fehlerverdächtigen Seiten in der suspect_pages-Tabelle der msdb-Datenbank jeder Serverinstanz. Die suspect_pages-Tabelle ist maßgeblich für die Entscheidung, ob eine Wiederherstellung erforderlich ist.
Wenn das SQL Server-Datenbankmodul eine Datenbankseite mit einem Fehler vom Typ 824 (siehe Tabelle unten) liest, wird die Seite als "fehlerverdächtig" betrachtet und ihre Seiten-ID in der suspect_pages-Tabelle aufgezeichnet. Das Datenbankmodul zeichnet alle fehlerverdächtigen Seiten auf, die während der regulären Verarbeitung auftreten, z. B. bei folgenden Vorgängen:
- Eine Abfrage muss eine Seite lesen.
- Während eines DBCC CHECKDB-Vorgangs.
- Während eines Sicherungsvorgangs.
Die suspect_pages-Tabelle wird ggf. auch während eines Wiederherstellungsvorgangs, eines DBCC-Reparaturvorgangs oder eines Datenbanklöschvorgangs aktualisiert.
In der suspect_pages-Tabelle aufgezeichnete Fehler
Die suspect_pages-Tabelle enthält eine Zeile für jede Seite mit einem Fehler vom Typ 824 (maximal 1.000 Zeilen). Die folgenden Fehler vom Typ 824 werden in der event_type-Spalte der suspect_pages-Tabelle protokolliert.
Fehlerbeschreibung | event_type-Wert |
---|---|
Andere Fehler vom Typ 824 außer einer fehlerhaften Prüfsumme oder einer zerrissenen Seite (z. B. eine fehlerhafte Seiten-ID) |
1 |
Fehlerhafte Prüfsumme |
2 |
Zerrissene Seite |
3 |
Wiederhergestellt (die Seite wurde wiederhergestellt, nachdem sie als beschädigt markiert wurde) |
4 |
Repariert (DBCC hat die Seite repariert) |
5 |
Zuordnung durch DBCC aufgehoben |
7 |
In der suspect_pages-Tabelle werden auch vorübergehende Fehler aufgezeichnet. Ursachen für vorübergehende Fehler sind beispielsweise E/A-Fehler (z. B. eine fehlende Kabelverbindung) oder eine Seite, die einen wiederholten Prüfsummentest vorübergehend nicht besteht.
Vorgehensweise des Datenbankmoduls beim Aktualisieren der "suspect_pages"-Tabelle
Datenbankmodul führt folgende Aktionen in der suspect_pages-Tabelle aus:
- Wenn die Tabelle nicht voll ist, wird sie für jeden Fehler vom Typ 824 aktualisiert, um anzuzeigen, dass ein Fehler aufgetreten ist, und die Fehleranzahl wird erhöht.
- Wenn eine Seite einen Fehler aufweist, nachdem sie durch eine Reparatur, eine Wiederherstellung oder das Aufheben einer Zuordnung repariert wurde, wird die zugehörige number_of_errors-Fehleranzahl erhöht, und die zugehörige last_update-Spalte wird aktualisiert.
- Nachdem eine aufgelistete Seite durch einen Wiederherstellungs- oder Reparaturvorgang repariert wurde, aktualisiert der Vorgang die suspect_pages-Zeile, um anzuzeigen, dass die Seite repariert (event_type = 5) oder wiederhergestellt (event_type = 4) wurde.
- Wenn eine DBCC-Überprüfung ausgeführt wird, markiert die Überprüfung alle fehlerfreien Seiten als repariert (event_type = 5) oder als Seiten, deren Zuordnung aufgehoben wurde (event_type = 7).
Automatische Aktualisierungen der "suspect_pages"-Tabelle
Die folgenden Aktionen löschen automatisch Zeilen aus der suspect_pages-Tabelle:
- ALTER DATABASE REMOVE FILE
- DROP DATABASE
- DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS aktualisiert die suspect_pages-Tabelle, um jede Seite anzugeben, deren Zuordnung aufgehoben wurde oder die repariert wurde.
- RESTORE aktualisiert ebenfalls die Liste. Eine vollständige Wiederherstellung oder eine Datei- oder Seitenwiederherstellung markiert die Seiteneinträge als wiederhergestellt.
Verwaltungsrolle des Datenbankadministrators
Datenbankadministratoren sind zuständig für das Verwalten der Tabelle, insbesondere indem sie alte Zeilen löschen. Die Größe der suspect_pages-Tabelle ist beschränkt, und wenn sie voll ist, werden keine neuen Fehler mehr protokolliert. Wenn diese Tabelle ihr Limit erreicht, muss der Datenbankadministrator oder Systemadministrator durch das Löschen von Zeilen die alten Einträge manuell aus der Tabelle löschen. Es können erst wieder weitere Einträge vorgenommen werden, wenn ein Datenbankadministrator dies ausgeführt hat.
Ein Datenbankadministrator kann auch Datensätze einfügen oder aktualisieren. Das Aktualisieren einer Zeile ist z. B. sinnvoll, wenn der Datenbankadministrator weiß, dass eine bestimmte fehlerverdächtige Seite tatsächlich intakt ist, den Datensatz jedoch für eine Weile erhalten möchte.
Beispiele
Im folgenden Beispiel werden einige Zeilen aus der suspect_pages-Tabelle gelöscht.
-- Select restored, repaired, or deallocated pages.
DELETE FROM msdb..suspect_pages
WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);
GO
Im folgenden Beispiel werden die fehlerhaften Seiten in der suspect_pages-Tabelle ausgewählt.
-- Select nonspecific 824, bad checksum, and torn page errors.
SELECT * FROM msdb..suspect_pages
WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
GO
Siehe auch
Konzepte
Ausführen von Seitenwiederherstellungen
Andere Ressourcen
DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
suspect_pages (Transact-SQL)