DBCC CHECKCATALOG (Transact-SQL)
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance
Überprüft die Katalogkonsistenz innerhalb der angegebenen Datenbank. Die Datenbank muss online sein.
Transact-SQL-Syntaxkonventionen
Syntax
DBCC CHECKCATALOG
[
(
database_name | database_id | 0
)
]
[ WITH NO_INFOMSGS ]
Hinweis
Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.
Argumente
database_name | database_id | 0
Der Name oder die ID der Datenbank, für die die Katalogkonsistenz überprüft werden soll. Wird kein Wert oder der Wert 0 angegeben, wird die aktuelle Datenbank verwendet. Datenbanknamen müssen den Regeln für Bezeichner entsprechen.
WITH NO_INFOMSGS
Alle Informationsmeldungen werden unterdrückt.
Bemerkungen
Nachdem der Befehl DBCC CHECKCATALOG
ausgeführt wurde, wird eine Meldung in das SQL Server-Fehlerprotokoll geschrieben. Wurde der DBCC-Befehl erfolgreich ausgeführt, zeigt die Meldung den erfolgreichen Abschluss und die Ausführungsdauer des Befehls an. Wurde der DBCC-Befehl aufgrund eines Fehlers vor Abschluss der Überprüfung beendet, zeigt die Meldung an, dass der Befehl beendet wurde. Außerdem wird ein Statuswert und die Ausführungsdauer des Befehls angegeben. In der folgenden Tabelle sind die Statuswerte aufgeführt und beschrieben, die in der Meldung enthalten sein können.
State | BESCHREIBUNG |
---|---|
0 | Fehlernummer 8930 wurde ausgelöst. Dies weist auf beschädigte Metadaten hin, die die Beendigung des DBCC-Befehls verursacht haben. |
1 | Fehlernummer 8967 wurde ausgelöst. Ein interner DBCC-Fehler ist aufgetreten. |
2 | Beim Reparieren einer Datenbank im Notfallmodus ist ein Fehler aufgetreten. |
3 | Dies weist auf beschädigte Metadaten hin, die die Beendigung des DBCC-Befehls verursacht haben. |
4 | Eine Assertations- oder Zugriffsverletzung wurde entdeckt. |
5 | Ein unbekannter Fehler ist aufgetreten, der den DBCC-Befehl beendet hat. |
DBCC CHECKCATALOG
führt verschiedene Konsistenzprüfungen zwischen Systemmetadatentabellen aus. DBCC CHECKCATALOG
verwendet Datenbankmomentaufnahme, um die für die Ausführung dieser Überprüfungen erforderliche Transaktionskonsistenz bereitzustellen. Weitere Informationen finden Sie unter Anzeigen der Größe der Sparsedatei einer Datenbankmomentaufnahme (Transact-SQL) und im Abschnitt Verwenden einer internen Datenbankmomentaufnahme mit DBCC unter DBCC (Transact-SQL).
Wenn eine Momentaufnahme nicht erstellt werden kann, erwirbt DBCC CHECKCATALOG
eine exklusive Datenbanksperre, um die erforderliche Konsistenz zu erhalten. Wenn Inkonsistenzen gefunden werden, können diese nicht repariert werden, und die Datenbank muss von einer Sicherung wiederhergestellt werden.
Hinweis
Beim Ausführen von DBCC CHECKCATALOG
für tempdb
werden keine Überprüfungen ausgeführt. Dies liegt daran, dass aus Leistungsgründen keine Datenbankmomentaufnahmen für tempdb
verfügbar sind. Dies bedeutet, dass die erforderliche Transaktionskonsistenz nicht erhalten werden kann. Starten Sie den Datenbank-Engine-Dienst neu, um tempdb
-Metadatenprobleme zu beheben.
Hinweis
DBCC CHECKCATALOG
überprüft keine FILESTREAM-Daten. FILESTREAM speichert BLOBs (Binary Large Objects) im Dateisystem.
DBCC CHECKCATALOG
wird auch im Rahmen von DBCC CHECKDB ausgeführt.
Resultsets
Wenn keine Datenbank angegeben ist, gibt DBCC CHECKCATALOG
Folgendes zurück:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Wenn AdventureWorks2022
als Datenbankname angegeben wird, gibt DBCC CHECKCATALOG
Folgendes zurück:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Berechtigungen
Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner.
Beispiele
Im folgenden Beispiel wird die Katalogintegrität in der aktuellen Datenbank und in der AdventureWorks2022
-Datenbank überprüft.
-- Check the current database.
DBCC CHECKCATALOG;
GO
-- Check the AdventureWorks database.
DBCC CHECKCATALOG (AdventureWorks2022);
GO