DBCC CHECKDB (Transact-SQL)DBCC CHECKDB (Transact-SQL)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2012)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2012)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Überprüft die logische und physische Integrität aller Objekte in der angegebenen Datenbank durch Ausführen der folgenden Vorgänge:Checks the logical and physical integrity of all the objects in the specified database by performing the following operations:

  • Die Ausführung von DBCC CHECKALLOC für die Datenbank.Runs DBCC CHECKALLOC on the database.
  • Die Ausführung von DBCC CHECKTABLE für jede Tabelle und Sicht in der Datenbank.Runs DBCC CHECKTABLE on every table and view in the database.
  • Die Ausführung von DBCC CHECKCATALOG für die Datenbank.Runs DBCC CHECKCATALOG on the database.
  • Die Überprüfung des Inhalts jeder indizierten Sicht in der Datenbank.Validates the contents of every indexed view in the database.
  • Die Überprüfung der Konsistenz auf Linkebene zwischen den Metadaten der Tabellen und den Dateisystemverzeichnissen und -dateien beim Speichern von varbinary(max)-Daten im Dateisystem mithilfe von FILESTREAM.Validates link-level consistency between table metadata and file system directories and files when storing varbinary(max) data in the file system using FILESTREAM.
  • Die Überprüfung der Service BrokerService Broker-Daten in der Datenbank.Validates the Service BrokerService Broker data in the database.

Das bedeutet, dass die Befehle DBCC CHECKALLOC, DBCC CHECKTABLE oder DBCC CHECKCATALOG nicht separat von DBCC CHECKDB ausgeführt werden müssen.This means that the DBCC CHECKALLOC, DBCC CHECKTABLE, or DBCC CHECKCATALOG commands do not have to be run separately from DBCC CHECKDB. Ausführlichere Informationen zu den von diesen Befehlen ausgeführten Überprüfungen finden Sie in den Beschreibungen dieser Befehle.For more detailed information about the checks that these commands perform, see the descriptions of these commands.

Hinweis

DBCC CHECKDB wird für Datenbanken unterstützt, die speicheroptimierte Tabellen enthalten. Die Überprüfung wird jedoch nur für Tabellen auf dem Datenträger ausgeführt.DBCC CHECKDB is supported on databases that contain memory-optimized tables but validation only occurs on disk-based tables. Im Rahmen der Sicherung und Wiederherstellung von Datenbanken wird die CHECKSUM-Überprüfung jedoch für Dateien in speicheroptimierten Dateigruppen ausgeführt.However, as part of database backup and recovery, a CHECKSUM validation is done for files in memory-optimized filegroups.

Da DBCC-Reparaturoptionen sind nicht für speicheroptimierte Tabellen verfügbar. Sie müssen die Datenbanken regelmäßig sichern und die Sicherungen testen.Since DBCC repair options are not available for memory-optimized tables, you must back up your databases regularly and test the backups. Wenn bei einer speicheroptimierten Tabelle Datenintegritätsprobleme auftreten, müssen Sie die Tabelle von der letzten bekannten fehlerfreien Sicherung wiederherstellen.If data integrity issues occur in a memory-optimized table, you must restore from the last known good backup.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

DBCC CHECKDB     
    [ ( database_name | database_id | 0    
        [ , NOINDEX     
        | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]    
    ) ]    
    [ WITH     
        {    
            [ ALL_ERRORMSGS ]    
            [ , EXTENDED_LOGICAL_CHECKS ]     
            [ , NO_INFOMSGS ]    
            [ , TABLOCK ]    
            [ , ESTIMATEONLY ]    
            [ , { PHYSICAL_ONLY | DATA_PURITY } ]    
            [ , MAXDOP  = number_of_processors ]    
        }    
    ]    
]    

ArgumenteArguments

database_name | database_id | 0database_name | database_id | 0
Der Name oder die ID der Datenbank, für die Integritätsprüfungen ausgeführt werden.Is the name or ID of the database for which to run integrity checks. Erfolgt keine Eingabe, oder wird 0 angegeben, wird die aktuelle Datenbank verwendet.If not specified, or if 0 is specified, the current database is used. Datenbanknamen müssen den Regeln für Bezeichner entsprechen.Database names must comply with the rules for identifiers.

NOINDEXNOINDEX
Legt fest, dass nicht gruppierte Indizes für Benutzertabellen nicht intensiv überprüft werden.Specifies that intensive checks of nonclustered indexes for user tables should not be performed. Dadurch wird die Ausführungsdauer insgesamt verkürzt.This decreases the overall execution time. NOINDEX wirkt sich nicht auf Systemtabellen aus, da Integritätsprüfungen für Systemtabellenindizes immer ausgeführt werden.NOINDEX does not affect system tables because integrity checks are always performed on system table indexes.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Gibt an, dass DBCC CHECKDB gefundene Fehler behebt.Specifies that DBCC CHECKDB repair the found errors. Verwenden Sie die REPAIR-Optionen nur als letzte Möglichkeit.Use the REPAIR options only as a last resort. Die angegebene Datenbank muss sich im Einzelbenutzermodus befinden, damit eine der folgenden Reparaturoptionen verwendet werden kann.The specified database must be in single-user mode to use one of the following repair options.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
Versucht, alle gemeldeten Fehler zu reparieren.Tries to repair all reported errors. Diese Reparaturen können zu Datenverlusten führen.These repairs can cause some data loss.

Warnung

Die Option REPAIR_ALLOW_DATA_LOSS ist ein unterstütztes Feature, stellt jedoch möglicherweise nicht immer die beste Option dar, um eine Datenbank in einen physisch konsistenten Zustand zu versetzen.The REPAIR_ALLOW_DATA_LOSS option is a supported feature but it may not always be the best option for bringing a database to a physically consistent state. Im Erfolgsfall kann die REPAIR_ALLOW_DATA_LOSS-Option zu Datenverlusten führen.If successful, the REPAIR_ALLOW_DATA_LOSS option may result in some data loss. Tatsächlich können dabei mehr Daten verloren gehen als bei einer Wiederherstellung der Datenbank aus der letzten als funktionierend bekannten Sicherung durch den Benutzer.In fact, it may result in more data lost than if a user were to restore the database from the last known good backup.

MicrosoftMicrosoft empfiehlt immer eine Wiederherstellung durch den Benutzer aus der letzten als funktionierend bekannten Sicherung als primäre Methode zur Wiederherstellung nach Fehlern, die von DBCC CHECKDB gemeldet wurden. always recommends a user restore from the last known good backup as the primary method to recover from errors reported by DBCC CHECKDB. Die REPAIR_ALLOW_DATA_LOSS-Option ist keine Alternative zur Wiederherstellung aus einer als funktionierend bekannten Sicherung.The REPAIR_ALLOW_DATA_LOSS option is not an alternative for restoring from a known good backup. Diese Option ist nur für den Notfall als „letzte Option“ geeignet, wenn die Wiederherstellung aus einer Sicherung nicht möglich ist.It is an emergency “last resort” option recommended for use only if restoring from a backup is not possible.

Für bestimmte Fehler, die nur mithilfe der REPAIR_ALLOW_DATA_LOSS-Option behoben werden können, muss möglicherweise die Zuordnung einer Zeile, Seite oder Reihe von Seiten aufgehoben werden, um die Fehler zu löschen.Certain errors, that can only be repaired using the REPAIR_ALLOW_DATA_LOSS option, may involve deallocating a row, page, or series of pages to clear the errors. Daten, deren Zuordnung aufgehoben wurde, sind für den Benutzer nicht mehr verfügbar oder wiederherstellbar, und der genaue Inhalt dieser Daten kann nicht bestimmt werden.Any deallocated data is no longer accessible or recoverable for the user, and the exact contents of the deallocated data cannot be determined. Aus diesem Grund ist die referentielle Integrität möglicherweise nicht genau, nachdem die Zuordnung von Zeilen oder Seiten aufgehoben wurde, da Einschränkungen für Fremdschlüssel nicht als Teil dieses Reparaturvorgangs geprüft oder gewartet werden.Therefore, referential integrity may not be accurate after any rows or pages are deallocated because foreign key constraints are not checked or maintained as part of this repair operation. Der Benutzer muss die referentielle Integrität der Datenbank (mit DBCC CHECKCONSTRAINTS) überprüfen, nachdem er die REPAIR_ALLOW_DATA_LOSS-Option verwendet hat.The user must inspect the referential integrity of their database (using DBCC CHECKCONSTRAINTS) after using the REPAIR_ALLOW_DATA_LOSS option.

Erstellen Sie vor dem Ausführen der Reparatur physische Kopien der Dateien, die zu dieser Datenbank gehören.Before performing the repair, create physical copies of the files that belong to this database. Dies schließt die primäre Datendatei (.mdf), beliebige sekundäre Datendateien (.ndf), alle Transaktionsprotokolldateien (.ldf) und andere Container ein, aus denen die Datenbank besteht, einschließlich Volltextkataloge, Datenstromordner, speicheroptimierte Daten usw.This includes the primary data file (.mdf), any secondary data files (.ndf), all transaction log files (.ldf), and other containers that form the database including full text catalogs, file stream folders, memory optimized data, etc.

Erwägen Sie vor dem Ausführen der Reparatur, den Status der Datenbank in den Modus EMERGENCY zu ändern und zu versuchen, so viele Informationen wie möglich aus den kritischen Tabellen zu extrahieren und die Daten zu speichern.Before performing the repair, consider changing the state of the database to EMERGENCY mode and trying to extract as much information possible from the critical tables and save that data.

REPAIR_FASTREPAIR_FAST
Wird nur aus Gründen der Abwärtskompatibilität der Syntax beibehalten.Maintains syntax for backward compatibility only. Es werden keine Reparaturaktionen ausgeführt.No repair actions are performed.

REPAIR_REBUILDREPAIR_REBUILD
Führt Reparaturen aus, bei denen kein Datenverlust möglich ist.Performs repairs that have no possibility of data loss. Dazu können schnelle Reparaturen gehören, wie z. B. das Reparieren fehlender Zeilen in nicht gruppierten Indizes, als auch zeitaufwändigere Reparaturen, wie das Neuerstellen von Indizes.This can include quick repairs, such as repairing missing rows in non-clustered indexes, and more time-consuming repairs, such as rebuilding an index.
Dieses Argument behebt keine Fehler, die FILESTREAM-Daten betreffen.This argument does not repair errors involving FILESTREAM data.

Wichtig

Da DBCC CHECKDB mit einer der REPAIR-Optionen vollständig protokolliert und wiederherstellbar ist, empfiehlt MicrosoftMicrosoft immer, dass Benutzer CHECKDB mit REPAIR-Optionen innerhalb einer Transaktion verwenden (BEGIN TRANSACTION vor Ausführung des Befehls ausführen), damit der Benutzer bestätigen kann, dass er die Ergebnisse des Vorgangs akzeptieren möchte.Since DBCC CHECKDB with any of the REPAIR options are completely logged and recoverable, MicrosoftMicrosoft always recommends a user use CHECKDB with any REPAIR options within a transaction (execute BEGIN TRANSACTION before running the command) so that the user can confirm he/she wants to accept the results of the operation. Der Benutzer kann dann COMMIT TRANSACTION ausführen, um alle vom Reparaturvorgang vorgenommenen Arbeiten zu bestätigen.Then the user can execute COMMIT TRANSACTION to commit all work done by the repair operation. Wenn der Benutzer die Ergebnisse des Vorgangs nicht akzeptieren möchte, kann er eine ROLLBACK TRANSACTION durchführen, um die Auswirkungen der Reparaturvorgänge rückgängig zu machen.If the user does not want to accept the results of the operation, he/she can execute a ROLLBACK TRANSACTION to undo the effects of the repair operations.

Zum Reparieren von Fehlern empfiehlt sich das Wiederherstellen mithilfe einer Sicherung.To repair errors, we recommend restoring from a backup. Bei Reparaturvorgängen werden keine Einschränkungen berücksichtigt, die möglicherweise in oder zwischen Tabellen vorhanden sind.Repair operations do not consider any of the constraints that may exist on or between tables. Wenn die angegebene Tabelle an einer oder mehreren Einschränkungen beteiligt ist, ist es empfehlenswert, nach einem Reparaturvorgang DBCC CHECKCONSTRAINTS auszuführen.If the specified table is involved in one or more constraints, we recommend running DBCC CHECKCONSTRAINTS after a repair operation. Wenn Sie REPAIR verwenden müssen, sollten Sie DBCC CHECKDB ohne Reparaturoption ausführen, um die zu verwendende Reparaturstufe zu ermitteln.If you must use REPAIR, run DBCC CHECKDB without a repair option to find the repair level to use. Wenn Sie die REPAIR_ALLOW_DATA_LOSS-Ebene verwenden, empfiehlt es sich, die Datenbank vor dem Ausführen von DBCC CHECKDB zu sichern.If you use the REPAIR_ALLOW_DATA_LOSS level, we recommend that you back up the database before you run DBCC CHECKDB with this option.

ALL_ERRORMSGSALL_ERRORMSGS
Zeigt alle gemeldeten Fehler für jedes Objekt an.Displays all reported errors per object. Alle Fehlermeldungen werden standardmäßig angezeigt.All error messages are displayed by default. Das Angeben oder Weglassen dieser Option hat keine Auswirkungen.Specifying or omitting this option has no effect. Die Fehlermeldungen werden nach der Objekt-ID sortiert. Davon ausgenommen sind Meldungen, die für die tempdb-Datenbank generiert wurden.Error messages are sorted by object ID, except for those messages generated from tempdb database.

EXTENDED_LOGICAL_CHECKSEXTENDED_LOGICAL_CHECKS
Wenn der Kompatiblitätsgrad 100 ( SQL Server 2008SQL Server 2008) oder höher ist, werden logische Konsistenzprüfungen an einer indizierten Sicht, XML-Indizes und räumliche Indizes (sofern vorhanden) ausgeführt.If the compatibility level is 100 ( SQL Server 2008SQL Server 2008) or higher, performs logical consistency checks on an indexed view, XML indexes, and spatial indexes, where present.
Weitere Informationen finden Sie unter Ausführen logischer Konsistenzprüfungen an Indizes im Abschnitt Hinweise weiter unten in diesem Thema.For more information, see Performing Logical Consistency Checks on Indexes, in the Remarks section later in this topic.

NO_INFOMSGSNO_INFOMSGS
Alle Informationsmeldungen werden unterdrückt.Suppresses all informational messages.

TABLOCKTABLOCK
Bewirkt, dass DBCC CHECKDB Sperren erhält, statt eine interne Datenbankmomentaufnahme zu verwenden.Causes DBCC CHECKDB to obtain locks instead of using an internal database snapshot. Dies schließt eine kurzfristige exklusive Sperre (X) für die Datenbank ein.This includes a short-term exclusive (X) lock on the database. Durch TABLOCK wird DBCC CHECKDB schneller in einer stark ausgelasteten Datenbank ausgeführt, allerdings verringert sich während der Ausführung von DBCC CHECKDB die in der Datenbank verfügbare Parallelität.TABLOCK will cause DBCC CHECKDB to run faster on a database under heavy load, but decreases the concurrency available on the database while DBCC CHECKDB is running.

Wichtig

TABLOCK beschränkt die ausgeführten Überprüfungen. DBCC CHECKCATALOG wird nicht für die Datenbank ausgeführt, und Service BrokerService Broker-Daten werden nicht überprüft.TABLOCK limits the checks that are performed; DBCC CHECKCATALOG is not run on the database, and Service BrokerService Broker data is not validated.

ESTIMATEONLYESTIMATEONLY
Zeigt den tempdb-Speicherplatz an, der schätzungsweise erforderlich ist, um DBCC CHECKDB mit allen anderen angegebenen Optionen auszuführen.Displays the estimated amount of tempdb space that is required to run DBCC CHECKDB with all the other specified options. Die eigentliche Datenbankprüfung wird nicht ausgeführt.The actual database check is not performed.

PHYSICAL_ONLYPHYSICAL_ONLY
Begrenzt die Überprüfung der Integrität der physischen Struktur der Seiten- und Datensatzheader und der Zuordnungskonsistenz der Datenbank.Limits the checking to the integrity of the physical structure of the page and record headers and the allocation consistency of the database. Die Überprüfung soll dazu dienen, mit geringem Verwaltungsaufwand eine Überprüfung der physischen Konsistenz der Datenbank vorzunehmen. Dabei können auch zerrissene Seiten, Prüfsummenfehler und häufige Hardwarefehler erkannt werden, die Benutzerdaten gefährden können.This check is designed to provide a small overhead check of the physical consistency of the database, but it can also detect torn pages, checksum failures, and common hardware failures that can compromise a user's data.
Eine vollständige Ausführung von DBCC CHECKDB kann erheblich mehr Zeit in Anspruch nehmen als in früheren Versionen.A full run of DBCC CHECKDB may take considerably longer to complete than earlier versions. Dieses Verhalten tritt aus den folgenden Gründen auf:This behavior occurs because:

  • Die logischen Überprüfungen sind umfassender.The logical checks are more comprehensive.
  • Einige der zu überprüfenden zugrunde liegenden Strukturen sind komplexer.Some of the underlying structures to be checked are more complex.
  • Es wurden viele neue Überprüfungen eingeführt, um die neuen Funktionen einzuschließen.Many new checks have been introduced to include the new features.
    Daher bewirkt das Verwenden der PHYSICAL_ONLY-Option möglicherweise eine viel kürzere Ausführungszeit von DBCC CHECKDB für große Datenbanken. Sie wird daher für die häufige Verwendung in Produktionssystemen empfohlen.Therefore, using the PHYSICAL_ONLY option may cause a much shorter run-time for DBCC CHECKDB on large databases and is recommended for frequent use on production systems. Dennoch ist eine vollständige Ausführung von DBCC CHECKDB in regelmäßigen Abständen empfehlenswert.We still recommend that a full run of DBCC CHECKDB be performed periodically. Die Häufigkeit dieser Ausführungsvorgänge hängt von Faktoren ab, die für einzelne Unternehmen und Produktionsumgebungen spezifisch sind.The frequency of these runs depends on factors specific to individual businesses and production environments.
    Dieses Argument impliziert stets NO_INFOMSGS und kann nicht mit einer der Reparaturoptionen verwendet werden.This argment always implies NO_INFOMSGS and is not allowed with any one of the repair options.

Warnung

Bei Angabe von PHYSICAL_ONLY überspringt DBCC CHECKDB alle Prüfungen der FILESTREAM-Daten.Specifying PHYSICAL_ONLY causes DBCC CHECKDB to skip all checks of FILESTREAM data.

DATA_PURITYDATA_PURITY
Bewirkt, dass DBCC CHECKDB die Datenbank auf Spaltenwerte überprüft, die ungültig sind oder außerhalb des zulässigen Bereichs liegen.Causes DBCC CHECKDB to check the database for column values that are not valid or out-of-range. So können mit DBCC CHECKDB z.B. Spalten mit Datums- und Zeitwerten erkannt werden, die außerhalb des zulässigen Bereichs für den datetime-Datentyp liegen, oder es werden decimal-Spalten oder Spalten mit einem ungefähren numerischen Datentyp erkannt, die ungültige Dezimal- oder Genauigkeitswerte enthalten.For example, DBCC CHECKDB detects columns with date and time values that are larger than or less than the acceptable range for the datetime data type; or decimal or approximate-numeric data type columns with scale or precision values that are not valid.
Die Überprüfung der Spaltenwertintegrität ist standardmäßig aktiviert. Die Option DATA_PURITY ist nicht erforderlich.Column-value integrity checks are enabled by default and do not require the DATA_PURITY option. Bei Datenbanken, die von früheren Versionen von SQL ServerSQL Server aktualisiert wurden, ist die Spaltenwertprüfung nicht standardmäßig aktiviert, die Aktivierung erfolgt erst, wenn DBCC CHECKDB WITH DATA_PURITY fehlerfrei für die Datenbank ausgeführt wurde.For databases upgraded from earlier versions of SQL ServerSQL Server, column-value checks are not enabled by default until DBCC CHECKDB WITH DATA_PURITY has been run error free on the database. Danach wird die Spaltenwertintegrität standardmäßig von DBCC CHECKDB überprüft.After this, DBCC CHECKDB checks column-value integrity by default. Weitere Informationen zu den möglichen Auswirkungen des Upgrades einer Datenbank von einer früheren Version von SQL ServerSQL Server finden Sie im Abschnitt mit Hinweisen weiter unten in diesem Thema.For more information about how CHECKDB might be affected by upgrading database from earlier versions of SQL ServerSQL Server, see the Remarks section later in this topic.

Warnung

Wenn PHYSICAL_ONLY angegeben ist, wird die Spaltenintegrität nicht überprüft.If PHYSICAL_ONLY is specified, column-integrity checks are not performed.

Mit dieser Option gemeldete Überprüfungsfehler können nicht mithilfe der DBCC-Reparaturoptionen behoben werden.Validation errors reported by this option cannot be fixed by using DBCC repair options. Informationen zur manuellen Behebung dieser Fehler finden Sie im Knowledge Base-Artikel 923247: Problembehandlung bei DBCC-Fehler 2570 in SQL Server 2005 und höher.For information about manually correcting these errors, see Knowledge Base article 923247: Troubleshooting DBCC error 2570 in SQL Server 2005 and later versions.

MAXDOPMAXDOP
Gilt für: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 bis SQL Server 2017SQL Server 2017).Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 through SQL Server 2017SQL Server 2017).

Überschreibt die Konfigurationsoption Max. Grad an Parallelität von sp_configure für die Anweisung.Overrides the max degree of parallelism configuration option of sp_configure for the statement. Der MAXDOP kann den mit „sp_configure“ konfigurierten Wert überschreiten.The MAXDOP can exceed the value configured with sp_configure. Wenn MAXDOP den mit Resource Governor konfigurierten Wert überschreitet, verwendet SQL Server-DatenbankmodulSQL Server Database Engine den in ALTER WORKLOAD GROUP beschriebenen MAXDOP-Wert von Resource Governor.If MAXDOP exceeds the value configured with Resource Governor, the SQL Server-DatenbankmodulSQL Server Database Engine uses the Resource Governor MAXDOP value, described in ALTER WORKLOAD GROUP. Alle semantischen Regeln, die mit der Konfigurationsoption Max. Grad an Parallelität verwendet werden können, stehen beim Verwenden des MAXDOP-Abfragehinweises zur Verfügung.All semantic rules used with the max degree of parallelism configuration option are applicable when you use the MAXDOP query hint. Weitere Informationen finden Sie unter Configure the max degree of parallelism Server Configuration Option.For more information, see Configure the max degree of parallelism Server Configuration Option.

Warnung

Wenn MAXDOP auf 0 (Null) festgelegt wird, wählt SQL Server den maximalen Grad an Parallelität aus, der verwendet werden soll.If MAXDOP is set to zero then SQL Server chooses the max degree of parallelism to use.

HinweiseRemarks

Deaktivierte Indizes werden von DBCC CHECKDB nicht untersucht.DBCC CHECKDB does not examine disabled indexes. Weitere Informationen zu deaktivierten Indizes finden Sie unter Deaktivieren von Indizes und Einschränkungen.For more information about disabled indexes, see Disable Indexes and Constraints.

Wenn ein benutzerdefinierter Typ als Typ markiert ist, dessen Sortierreihenfolge eine Bytereihenfolge ist, darf es nur eine Serialisierung des benutzerdefinierten Typs geben.If a user-defined type is marked as being byte ordered, there must only be one serialization of the user-defined type. Wenn keine konsistente Serialisierung benutzerdefinierter Typen vorhanden ist, deren Sortierreihenfolge eine Bytereihenfolge ist, wird bei der Ausführung von DBCC CHECKDB der Fehler 2537 ausgegeben.Not having a consistent serialization of byte-ordered user-defined types causes error 2537 when DBCC CHECKDB is run. Weitere Informationen finden Sie unter Erstellen von benutzerdefinierten Typen – Anforderungen.For more information, see User-Defined Type Requirements.

Da der Zugriff auf die Ressourcendatenbank nur im Einzelbenutzermodus möglich ist, kann der DBCC CHECKDB-Befehl für diese Datenbank nicht direkt ausgeführt werden.Because the Resource database is modifiable only in single-user mode, the DBCC CHECKDB command cannot be run on it directly. Wenn DBCC CHECKDB jedoch für die Masterdatenbank ausgeführt wird, wird intern ein zweiter CHECKDB-Befehl für die Ressourcendatenbank ausgeführt.However, when DBCC CHECKDB is executed against the master database, a second CHECKDB is also run internally on the Resource database. Das bedeutet, dass DBCC CHECKDB möglicherweise zusätzliche Ergebnisse zurückgibt.This means that DBCC CHECKDB can return extra results. Der Befehl gibt zusätzliche Resultsets zurück, wenn keine Optionen festgelegt wurden oder wenn entweder die Option PHYSICAL_ONLY oder die Option ESTIMATEONLY festgelegt wurde.The command returns extra result sets when no options are set, or when either the PHYSICAL_ONLY or ESTIMATEONLY option is set.

Ab SQL Server 2005SQL Server 2005 SP2 wird durch das Ausführen von DBCC CHECKDB der Plancache für die Instanz von SQL ServerSQL Server nicht mehr gelöscht.Starting with SQL Server 2005SQL Server 2005 SP2, executing DBCC CHECKDB no longer clears the plan cache for the instance of SQL ServerSQL Server. In Versionen vor SQL Server 2005SQL Server 2005 SP2 wird beim Ausführen von DBCC CHECKDB der Plancache gelöscht.Before SQL Server 2005SQL Server 2005 SP2, executing DBCC CHECKDB clears the plan cache. Durch das Löschen des Plancaches wird eine Neukompilierung aller späteren Ausführungspläne verursacht, und möglicherweise entsteht plötzlich eine temporäre Verringerung der Abfrageleistung.Clearing the plan cache causes recompilation of all later execution plans and may cause a sudden, temporary decrease in query performance.

Ausführen logischer Konsistenzprüfungen an IndizesPerforming Logical Consistency Checks on Indexes

Die logische Konsistenzprüfung an Indizes variiert wie folgt je nach dem Kompatibilitätsgrad der Datenbank:Logical consistency checking on indexes varies according to the compatibility level of the database, as follows:

  • Wenn der Kompatibilitätsgrad 100 ( SQL Server 2008SQL Server 2008) oder höher ist:If the compatibility level is 100 ( SQL Server 2008SQL Server 2008) or higher:
  • DBCC CHECKDB führt sowohl physische als auch logische Konsistenzprüfungen für eine einzelne Tabelle und alle nicht gruppierten Indizes aus, sofern nicht NOINDEX angegeben wird.Unless NOINDEX is specified, DBCC CHECKDB performs both physical and logical consistency checks on a single table and on all its nonclustered indexes. Allerdings werden an XML-Indizes, räumlichen Indizes und indizierten Sichten standardmäßig nur physische Konsistenzprüfungen ausgeführt.However, on XML indexes, spatial indexes, and indexed views only physical consistency checks are performed by default.
  • Bei Angabe von WITH EXTENDED_LOGICAL_CHECKS werden logische Konsistenzprüfungen an indizierten Sichten, XML-Indizes und räumlichen Indizes (sofern vorhanden) ausgeführt.If WITH EXTENDED_LOGICAL_CHECKS is specified, logical checks are performed on an indexed view, XML indexes, and spatial indexes, where present. Standardmäßig werden physische Konsistenzprüfungen vor den logischen Konsistenzprüfungen ausgeführt.By default, physical consistency checks are performed before the logical consistency checks. Wenn NOINDEX ebenfalls angegeben wird, werden nur die logischen Prüfungen ausgeführt.If NOINDEX is also specified, only the logical checks are performed.

Diese logischen Konsistenzprüfungen überprüfen die interne Indextabelle des Indexobjekts anhand der Benutzertabelle, auf die verwiesen wird.These logical consistency checks cross check the internal index table of the index object with the user table that it is referencing. Zum Auffinden externer Zeilen wird eine interne Abfrage konstruiert, um eine vollständige Schnittmenge der internen Tabellen und der Benutzertabellen zu bilden.To find outlying rows, an internal query is constructed to perform a full intersection of the internal and user tables. Die Ausführung dieser Abfrage kann sich sehr stark auf die Leistung auswirken, und ihr Status kann nicht verfolgt werden.Running this query can have a very high effect on performance, and its progress cannot be tracked. Daher empfiehlt es sich, WITH EXTENDED_LOGICAL_CHECKS nur dann anzugeben, wenn Sie Indexprobleme vermuten, die nicht mit einer physischen Beschädigung in Zusammenhang stehen, oder wenn die Prüfsummen auf Seitenebene deaktiviert wurden und Sie eine Beschädigung der Hardware auf Spaltenebene vermuten.Therefore, we recommend that you specify WITH EXTENDED_LOGICAL_CHECKS only if you suspect index issues that are unrelated to physical corruption, or if page-level checksums have been turned off and you suspect column-level hardware corruption.

  • Bei einem gefilterten Index prüft DBCC CHECKDB anhand von Konsistenzprüfungen, ob die Indexeinträge dem Filterprädikat entsprechen.If the index is a filtered index, DBCC CHECKDB performs consistency checks to verify that the index entries satisfy the filter predicate.
  • Wenn der Kompatibilitätsgrad 90 oder weniger beträgt, führt DBCC CHECKDB sowohl physische als auch logische Konsistenzprüfungen für eine einzelne Tabelle oder indizierte Sicht und für alle nicht gruppierten Indizes und XML-Indizes aus, sofern nicht NOINDEX angegeben wird.If the compatibility level is 90 or less, unless NOINDEX is specified, DBCC CHECKDB performs both physical and logical consistency checks on a single table or indexed view and on all its nonclustered and XML indexes. Räumliche Indizes werden nicht unterstützt.Spatial indexes are not supported.
  • Ab SQL Server 2016 werden zusätzliche Überprüfungen von persistierten berechneten Spalten, UDT-Spalten und gefilterten Indizes nicht standardmäßig ausgeführt, um die teuren Auswertungen von Ausdrücken zu vermeiden.Starting with SQL Server 2016, additional checks on persisted computed columns, UDT columns, and filtered indexes will not run by default to avoid the expensive expression evaluations. Durch diese Änderung wird die Dauer der Ausführung von CHECKDB für Datenbanken, die diese Objekte enthalten, stark reduziert.This change greatly reduces the duration of CHECKDB against databases containing these objects. Jedoch werden die physischen Konsistenzprüfungen dieser Objekte stets abgeschlossen.However, the physical consistency checks of these objects is always completed. Nur wenn die Option EXTENDED_LOGICAL_CHECKS angegeben wird, werden die Auswertungen von Ausdrücken zusätzlich zu bereits vorhandenen logischen Überprüfungen (indizierte Sicht, XML-Indizes und Räumlichkeitsindizes) als Teil der Option EXTENDED_LOGICAL_CHECKS durchgeführt.Only when EXTENDED_LOGICAL_CHECKS option is specified will the expression evaluations be performed in addition to already present logical checks (indexed view, XML indexes, and spatial indexes) as part of the EXTENDED_LOGICAL_CHECKS option.

So erfahren Sie den Kompatibilitätsgrad einer DatenbankTo learn the compatibility level of a database

Interne DatenbankmomentaufnahmeInternal Database Snapshot

DBCC CHECKDB verwendet eine interne Datenbankmomentaufnahme für die Transaktionskonsistenz, die für diese Überprüfungen erforderlich ist.DBCC CHECKDB uses an internal database snapshot for the transactional consistency needed to perform these checks. Auf diese Weise werden beim Ausführen dieser Befehle Blockierungs- und Parallelitätsprobleme verhindert.This prevents blocking and concurrency problems when these commands are executed. Weitere Informationen finden Sie unter Anzeigen der Größe der Datei mit geringer Dichte einer Datenbankmomentaufnahme (Transact-SQL) und im Abschnitt „Verwenden einer internen Datenbankmomentaufnahme mit DBCC“ unter DBCC (Transact-SQL).For more information, see View the Size of the Sparse File of a Database Snapshot (Transact-SQL) and the DBCC Internal Database Snapshot Usage section in DBCC (Transact-SQL). Wenn keine Momentaufnahme erstellt werden kann oder TABLOCK angegeben wird, ruft DBCC CHECKDB Sperren ab, um die erforderliche Konsistenz bereitzustellen.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKDB acquires locks to obtain the required consistency. In diesem Fall ist für die Durchführung der Zuordnungsprüfungen eine exklusive Datenbanksperre erforderlich, und für die Durchführung der Tabellenprüfungen sind freigegebene Tabellensperren erforderlich.In this case, an exclusive database lock is required to perform the allocation checks, and shared table locks are required to perform the table checks. Die Ausführung von DBCC CHECKDB für „master“ schlägt fehl, falls keine interne Datenbankmomentaufnahme erstellt werden kann.DBCC CHECKDB fails when run against master if an internal database snapshot cannot be created. Das Ausführen von DBCC CHECKDB für tempdb bewirkt keine Zuordnungs- oder Katalogüberprüfungen; weiterhin sind freigegebene Tabellensperren erforderlich, um Tabellenüberprüfungen auszuführen.Running DBCC CHECKDB against tempdb does not perform any allocation or catalog checks and must acquire shared table locks to perform table checks. Dies liegt daran, dass aus Leistungsgründen keine Datenbankmomentaufnahmen auf tempdb verfügbar sind.This is because, for performance reasons, database snapshots are not available on tempdb. Dies bedeutet, dass die erforderliche Transaktionskonsistenz nicht erhalten werden kann.This means that the required transactional consistency cannot be obtained. Bei Microsoft SQL Server 2012 oder einer früheren Version von SQL Server erhalten Sie möglicherweise Fehlermeldungen, wenn Sie den DBCC CHECKDB-Befehl für eine Datenbank ausführen, deren Dateien sich auf einem mit ReFS formatierten Volume befinden.In Microsoft SQL Server 2012 or an earlier version of SQL Server, you may encounter error messages when you run the DBCC CHECKDB command for a database that has its files located on an ReFS-formatted volume. Weitere Informationen finden Sie im Knowledge Base-Artikel 2974455: Verhalten von DBCC CHECKDB, wenn sich die SQL Server-Datenbank auf einem ReFS-Volume befindet.For more information, see Knowledge Base article 2974455: DBCC CHECKDB behavior when the SQL Server database is located on an ReFS volume.

Überprüfen und Reparieren von FILESTREAM-DatenChecking and Repairing FILESTREAM Data

Wenn FILESTREAM für eine Datenbank und eine Tabelle aktiviert ist, können Sie varbinary(max)-BLOBs (Binary Large Objects) optional im Dateisystem speichern.When FILESTREAM is enabled for a database and table, you can optionally store varbinary(max) binary large objects (BLOBs) in the file system. Wenn Sie DBCC CHECKDB für eine Datenbank verwenden, die BLOBs im Dateisystem speichert, überprüft DBCC die Konsistenz auf Linkebene zwischen dem Dateisystem und der Datenbank.When using DBCC CHECKDB on a database that stores BLOBs in the file system, DBCC checks link-level consistency between the file system and database. Wenn eine Tabelle beispielsweise eine varbinary(max)-Spalte mit dem FILESTREAM-Attribut enthält, überprüft DBCC CHECKDB, ob zwischen den Dateisystemverzeichnissen und -dateien und den Tabellenzeilen, Spalten und Spaltenwerten eine 1:1-Zuordnung besteht.For example, if a table contains a varbinary(max) column that uses the FILESTREAM attribute, DBCC CHECKDB will check that there is a one-to-one mapping between file system directories and files and table rows, columns, and column values. DBCC CHECKDB kann Beschädigungen reparieren, wenn Sie die REPAIR_ALLOW_DATA_LOSS-Option angeben.DBCC CHECKDB can repair corruption if you specify the REPAIR_ALLOW_DATA_LOSS option. Um FILESTREAM-Beschädigung zu reparieren, löscht DBCC alle Tabellenzeilen, in denen Dateisystemdaten fehlen.To repair FILESTREAM corruption, DBCC will delete any table rows that are missing file system data.

Bewährte MethodenBest Practices

Es empfiehlt sich, die Option PHYSICAL_ONLY für die häufige Verwendung in Produktionssystemen zu verwenden.We recommend that you use the PHYSICAL_ONLY option for frequent use on production systems. Das Verwenden von PHYSICAL_ONLY kann die Ausführungszeit von DBCC CHECKDB für große Datenbanken erheblich verkürzen.Using PHYSICAL_ONLY can greatly shorten run-time for DBCC CHECKDB on large databases. Darüber hinaus sollte in regelmäßigen Abständen DBCC CHECKDB ohne Optionen ausgeführt werden.We also recommend that you periodically run DBCC CHECKDB with no options. Die Häufigkeit der Ausführung hängt von den jeweiligen Unternehmen und Produktionsumgebungen ab.How frequently you should perform these runs depends on individual businesses and their production environments.

Paralleles Überprüfen von ObjektenChecking Objects in Parallel

Standardmäßig führt DBCC CHECKDB eine parallele Überprüfung von Objekten aus.By default, DBCC CHECKDB performs parallel checking of objects. Der Grad der Parallelität wird automatisch durch den Abfrageprozessor bestimmt.The degree of parallelism is automatically determined by the query processor. Der Höchstgrad für die Parallelität wird genauso konfiguriert wie parallele Abfragen.The maximum degree of parallelism is configured just like parallel queries. Verwenden Sie sp_configure, um die maximale Anzahl von Prozessoren zu beschränken, die für DBCC-Überprüfungen verfügbar sind.To restrict the maximum number of processors available for DBCC checking, use sp_configure. Weitere Informationen finden Sie unter Configure the max degree of parallelism Server Configuration Option.For more information, see Configure the max degree of parallelism Server Configuration Option. Die parallele Überprüfung kann mithilfe des Ablaufverfolgungsflags 2528 deaktiviert werden.Parallel checking can be disabled by using trace flag 2528. Weitere Informationen finden Sie unter Ablaufverfolgungsflags (Transact-SQL).For more information, see Trace Flags (Transact-SQL).

Hinweis

Diese Funktion ist nicht in jeder Edition von SQL ServerSQL Serververfügbar.This feature is not available in every edition of SQL ServerSQL Server. Weitere Informationen finden Sie unter der parallelen Konsistenzprüfung im Abschnitt zu RDBMS-Verwaltbarkeit unter Von den SQL Server 2016-Editionen unterstützte Features.For more information, see parallel consistency check in the RDBMS Manageability section of Features Supported by the Editions of SQL Server 2016.

Grundlegendes zu DBCC-FehlermeldungenUnderstanding DBCC Error Messages

Nach der Fertigstellung des Befehls DBCC CHECKDB wird eine Meldung in das SQL ServerSQL Server-Fehlerprotokoll geschrieben.After the DBCC CHECKDB command finishes, a message is written to the SQL ServerSQL Server error log. Falls der DBCC-Befehl erfolgreich ausgeführt wird, gibt die Meldung den Erfolg und die Dauer der Ausführung an.If the DBCC command successfully executes, the message indicates success and the amount of time that the command ran. Falls der DBCC-Befehl vor Abschluss der Überprüfung aufgrund eines Fehlers beendet wird, gibt die Meldung die Beendigung des Befehls, einen Statuswert sowie die Dauer der Ausführung an.If the DBCC command stops before completing the check because of an error, the message indicates that the command was terminated, a state value, and the amount of time the command ran. In der folgenden Tabelle sind die Statuswerte aufgeführt und beschrieben, die in der Meldung enthalten sein können.The following table lists and describes the state values that can be included in the message.

StatusState BeschreibungDescription
00 Fehlernummer 8930 wurde ausgelöst.Error number 8930 was raised. Dies weist auf eine Beschädigung der Metadaten hin, die zur Beendigung des DBCC-Befehls geführt hat.This indicates a corruption in metadata that terminated the DBCC command.
11 Fehlernummer 8967 wurde ausgelöst.Error number 8967 was raised. Ein interner DBCC-Fehler ist aufgetreten.There was an internal DBCC error.
22 Beim Reparieren einer Datenbank im Notfallmodus ist ein Fehler aufgetreten.A failure occurred during emergency mode database repair.
33 Dies weist auf eine Beschädigung der Metadaten hin, die zur Beendigung des DBCC-Befehls geführt hat.This indicates a corruption in metadata that terminated the DBCC command.
44 Eine Assertations- oder Zugriffsverletzung wurde entdeckt.An assert or access violation was detected.
55 Ein unbekannter Fehler ist aufgetreten, der den DBCC-Befehl beendet hat.An unknown error occurred that terminated the DBCC command.

FehlerberichterstellungError Reporting

Eine Dumpdatei (SQLDUMP*nnnn*.txt) wird jedes Mal im SQL ServerSQL Server-Protokollverzeichnis erstellt, wenn DBCC CHECKDB einen Fehler durch eine Beschädigung erkennt.A dump file (SQLDUMP*nnnn*.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKDB detects a corruption error. Falls die Features zur Datensammlung zur Verwendung von Features und zur Fehlerberichterstellung für die SQL ServerSQL Server-Instanz aktiviert sind, wird die Datei automatisch an MicrosoftMicrosoft weitergeleitet.When the Feature Usage data collection and Error Reporting features are enabled for the instance of SQL ServerSQL Server, the file is automatically forwarded to MicrosoftMicrosoft. Die gesammelten Daten werden zur Verbesserung der Funktionalität von SQL ServerSQL Server verwendet.The collected data is used to improve SQL ServerSQL Server functionality. Die Sicherungsdatei enthält die Ergebnisse des DBCC CHECKDB-Befehls sowie eine zusätzliche Diagnoseausgabe.The dump file contains the results of the DBCC CHECKDB command and additional diagnostic output. Der Zugriff ist auf das SQL ServerSQL Server-Dienstkonto und Mitglieder der Systemadministratorrolle beschränkt.Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. Die Systemadministratorrolle enthält standardmäßig alle Mitglieder der Windows-Gruppe BUILTIN\Administrators und der lokalen Administratorgruppe.By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. Ein Fehler bei der Datensammlung verursacht keinen Fehler des DBCC-Befehls.The DBCC command does not fail if the data collection process fails.

Auflösen von FehlernResolving Errors

Wenn DBCC CHECKDB Fehler meldet, empfiehlt es sich, die Datenbank mithilfe einer Datenbanksicherung wiederherzustellen, statt REPAIR mit einer der REPAIR-Optionen auszuführen.If any errors are reported by DBCC CHECKDB, we recommend restoring the database from the database backup instead of running REPAIR with one of the REPAIR options. Wenn keine Sicherung vorhanden ist, können Sie die gemeldeten Fehler durch Ausführen von REPAIR beheben.If no backup exists, running repair corrects the errors reported. Die zu verwendende Reparaturoption wird am Ende der Liste gemeldeter Fehler angegeben.The repair option to use is specified at the end of the list of reported errors. Wenn die Fehlerkorrektur mithilfe der Option REPAIR_ALLOW_DATA_LOSS erfolgen soll, müssen möglicherweise jedoch einige Seiten, und damit auch Daten, gelöscht werden.However, correcting the errors by using the REPAIR_ALLOW_DATA_LOSS option might require deleting some pages, and therefore some data.

Unter bestimmten Bedingungen werden möglicherweise Werte in die Datenbank eingegeben, die basierend auf dem Datentyp der Spalte ungültig sind oder außerhalb des gültigen Bereichs liegen.Under some circumstances, values might be entered into the database that are not valid or out-of-range based on the data type of the column. DBCC CHECKDB kann ungültige Spaltenwerte für alle Spaltendatentypen erkennen.DBCC CHECKDB can detect column values that are not valid for all column data types. Wird DBCC CHECKDB mit der Option DATA_PURITY für Datenbanken ausgeführt, die von früheren Versionen von SQL ServerSQL Server aktualisiert wurden, ist es daher möglich, dass bereits vorhandene Spaltenwertfehler aufgedeckt werden.Therefore, running DBCC CHECKDB with the DATA_PURITY option on databases that have been upgraded from earlier versions of SQL ServerSQL Server might reveal preexisting column-value errors. Da SQL ServerSQL Server diese Fehler nicht automatisch reparieren kann, muss der Spaltenwert manuell aktualisiert werden.Because SQL ServerSQL Server cannot automatically repair these errors, the column value must be manually updated. Wenn CHECKDB einen derartigen Fehler erkennt, werden eine Warnung, die Fehlernummer 2570 sowie Informationen zurückgegeben, anhand derer die betroffene Zeile identifiziert und der Fehler manuell behoben werden kann.If CHECKDB detects such an error, CHECKDB returns a warning, the error number 2570, and information to identify the affected row and manually correct the error.

Die Reparatur kann im Rahmen einer Benutzertransaktion ausgeführt werden, damit der Benutzer für die vorgenommenen Änderungen ggf. ein Rollback ausführen kann.The repair can be performed under a user transaction to let the user roll back the changes that were made. Falls für Reparaturen ein Rollback ausgeführt wird, enthält die Datenbank immer noch Fehler und muss von einer Sicherung wiederhergestellt werden.If repairs are rolled back, the database will still contain errors and must be restored from a backup. Nach Abschluss der Reparaturen sollten Sie eine Sicherung der Datenbank durchführen.After repairs are completed, back up the database.

Beheben von Fehlern im Datenbank-NotfallmodusResolving Errors in Database Emergency Mode

Wenn eine Datenbank mithilfe der ALTER DATABASE-Anweisung in den Notfallmodus versetzt wurde, können mit DBCC CHECKDB einige besondere Reparaturen an der Datenbank ausgeführt werden, sofern die Option REPAIR_ALLOW_DATA_LOSS angegeben wurde.When a database has been set to emergency mode by using the ALTER DATABASE statement, DBCC CHECKDB can perform some special repairs on the database if the REPAIR_ALLOW_DATA_LOSS option is specified. Durch diese Reparaturen können normalerweise nicht wiederherstellbare Datenbanken in einem physisch konsistenten Zustand wieder online geschaltet werden.These repairs may allow for ordinarily unrecoverable databases to be brought back online in a physically consistent state. Die Reparaturen sollten als letzte Möglichkeit und nur dann verwendet werden, wenn die Datenbank nicht von einer Sicherung wiederhergestellt werden kann.These repairs should be used as a last resort and only when you cannot restore the database from a backup. Wenn sich die Datenbank im Notfallmodus befindet, wird sie als READ_ONLY markiert, die Protokollierung deaktiviert und der Zugriff auf Mitglieder der festen Serverrolle „sysadmin“ beschränkt.When the database is set to emergency mode, the database is marked READ_ONLY, logging is disabled, and access is limited to members of the sysadmin fixed server role.

Hinweis

Sie können den DBCC CHECKDB-Befehl nicht im Notfallmodus in einer Benutzertransaktion ausführen und nach der Ausführung für die Transaktion ein Rollback ausführen.You cannot run the DBCC CHECKDB command in emergency mode inside a user transaction and roll back the transaction after execution.

Wenn sich die Datenbank im Notfallmodus befindet und DBCC CHECKDB mit der REPAIR_ALLOW_DATA_LOSS-Klausel ausgeführt wird, werden die folgenden Aktionen ausgeführt:When the database is in emergency mode and DBCC CHECKDB with the REPAIR_ALLOW_DATA_LOSS clause is run, the following actions are taken:

  • DBCC CHECKDB verwendet Seiten, die aufgrund von E/A- oder Prüfsummenfehlern mit Kein Zugriff markiert wurden, als wären keine Fehler aufgetreten.DBCC CHECKDB uses pages that have been marked inaccessible because of I/O or checksum errors, as if the errors have not occurred. Dadurch erhöhen sich die Chancen für eine Datenwiederherstellung aus der Datenbank.Doing this increases the chances for data recovery from the database.
  • DBCC CHECKDB versucht, die Datenbank mithilfe regulärer, protokollbasierter Wiederherstellungstechniken wiederherzustellen.DBCC CHECKDB attempts to recover the database using regular log-based recovery techniques.
  • Falls die Datenbank aufgrund einer Beschädigung des Transaktionsprotokolls nicht wiederhergestellt werden kann, wird das Transaktionsprotokoll neu erstellt.If, because of transaction log corruption, database recovery is unsuccessful, the transaction log is rebuilt. Beim Neuerstellen des Transaktionsprotokolls kann die Transaktionskonsistenz möglicherweise verloren gehen.Rebuilding the transaction log may result in the loss of transactional consistency.

Warnung

Die REPAIR_ALLOW_DATA_LOSS-Option ist ein unterstütztes Feature von SQL ServerSQL Server.The REPAIR_ALLOW_DATA_LOSS option is a supported feature of SQL ServerSQL Server. Jedoch ist sie möglicherweise nicht immer die beste Option, um eine Datenbank in einen physisch konsistenten Zustand zu versetzen.However, it may not always be the best option for bringing a database to a physically consistent state. Im Erfolgsfall kann die REPAIR_ALLOW_DATA_LOSS-Option zu Datenverlusten führen.If successful, the REPAIR_ALLOW_DATA_LOSS option may result in some data loss. Tatsächlich können dabei mehr Daten verloren gehen als bei einer Wiederherstellung der Datenbank aus der letzten als funktionierend bekannten Sicherung durch den Benutzer.In fact, it may result in more data lost than if a user were to restore the database from the last known good backup. MicrosoftMicrosoft empfiehlt immer eine Wiederherstellung durch den Benutzer aus der letzten als funktionierend bekannten Sicherung als primäre Methode zur Wiederherstellung nach Fehlern, die von DBCC CHECKDB gemeldet wurden. always recommends a user restore from the last known good backup as the primary method to recover from errors reported by DBCC CHECKDB. Die Option REPAIR_ALLOW_DATA_LOSS ist keine Alternative zur Wiederherstellung aus einer als funktionierend bekannten Sicherung.The REPAIR_ALLOW_DATA_LOSS option is not an alternative for restoring from a known good backup. Diese Option ist nur für den Notfall als „letzte Option“ geeignet, wenn die Wiederherstellung aus einer Sicherung nicht möglich ist.It is an emergency “last resort” option recommended for use only if restoring from a backup is not possible.

Nach dem Neuerstellen des Protokolls gibt es keine vollständige ACID-Garantie.After rebuilding the log, there is no full ACID guarantee.

Nach der Neuerstellung des Protokolls wird DBCC CHECKDB automatisch ausgeführt, und physische Konsistenzprobleme werden gemeldet und korrigiert.After rebuilding the log, DBCC CHECKDB will be automatically performed and will both report and correct physical consistency issues.

Durch logische Datenkonsistenz und Geschäftslogik erzwungene Dateneinschränkungen müssen manuell überprüft werden.Logical data consistency and business logic enforced constraints must be validated manually.

Die Größe des Transaktionsprotokolls wird auf der Standardgröße belassen und muss manuell wieder auf die letzte Größe angepasst werden.The transaction log size will be left to its default size and must be manually adjusted back to its recent size.

Ist der DBCC CHECKDB-Befehl erfolgreich, befindet sich die Datenbank in einem physisch konsistenten Zustand, und der Datenbankstatus wird auf ONLINE festgelegt.If the DBCC CHECKDB command succeeds, the database is in a physically consistent state and the database status is set to ONLINE. Die Datenbank kann jedoch Transaktionsinkonsistenzen enthalten.However, the database may contain one or more transactional inconsistencies. Es wird empfohlen, DBCC CHECKCONSTRAINTS auszuführen, um mögliche Fehler in der Geschäftslogik zu identifizieren und die Datenbank dann sofort zu sichern.We recommend that you run DBCC CHECKCONSTRAINTS to identify any business logic flaws and immediately back up the database. Falls der DBCC CHECKDB-Befehl einen Fehler generiert, kann die Datenbank nicht repariert werden.If the DBCC CHECKDB command fails, the database cannot be repaired.

Ausführen von DBCC CHECKDB mit REPAIR_ALLOW_DATA_LOSS in replizierten DatenbankenRunning DBCC CHECKDB with REPAIR_ALLOW_DATA_LOSS in Replicated Databases

Das Ausführen des Befehls DBCC CHECKDB mit der Option REPAIR_ALLOW_DATA_LOSS kann Auswirkungen auf Benutzerdatenbanken (Veröffentlichungs- und Abonnementdatenbanken) und die von der Replikation verwendete Verteilungsdatenbank haben.Running the DBCC CHECKDB command with the REPAIR_ALLOW_DATA_LOSS option can affect user databases (publication and subscription databases) and the distribution database used by replication. Veröffentlichungs- und Abonnementdatenbanken schließen veröffentlichte Tabellen und Tabellen mit Replikationsmetadaten ein.Publication and subscription databases include published tables and replication metadata tables. Beachten Sie die folgenden potenziellen Probleme in diesen Datenbanken:Be aware of the following potential issues in these databases:

  • Veröffentlichte Tabellen.Published tables. Aktionen, die vom CHECKDB-Prozess zur Reparatur beschädigter Benutzerdaten ausgeführt werden, werden möglicherweise nicht repliziert:Actions performed by the CHECKDB process to repair corrupt user data might not be replicated:
  • Die Mergereplikation verwendet Trigger, um Änderungen an veröffentlichten Tabellen nachzuverfolgen.Merge replication uses triggers to track changes to published tables. Wenn Zeilen vom CHECKDB-Prozess eingefügt, aktualisiert oder gelöscht werden, werden die Trigger nicht ausgelöst. Daher wird die Änderung nicht repliziert.If rows are inserted, updated, or deleted by the CHECKDB process, triggers do not fire; therefore, the change is not replicated.
  • Die Transaktionsreplikation verwendet das Transaktionsprotokoll, um Änderungen an veröffentlichten Tabellen nachzuverfolgen.Transactional replication uses the transaction log to track changes to published tables. Anschließend verschiebt der Protokolllese-Agent diese Änderungen in die Verteilungsdatenbank.The Log Reader Agent then moves these changes to the distribution database. Einige DBCC-Reparaturen werden zwar protokolliert, können vom Protokolllese-Agent jedoch nicht repliziert werden.Some DBCC repairs, although logged, cannot be replicated by the Log Reader Agent. Wenn z. B. die Zuordnung einer Datenseite durch den CHECKDB-Prozess aufgehoben wird, übersetzt der Protokolllese-Agent dies nicht in eine DELETE-Anweisung. Daher wird die Änderung nicht repliziert.For example, if a data page is deallocated by the CHECKDB process, the Log Reader Agent does not translate this to a DELETE statement; therefore, the change is not replicated.
  • Tabellen mit Replikationsmetadaten.Replication metadata tables. Für Aktionen, die vom CHECKDB-Prozess zur Reparatur beschädigter Tabellen mit Replikationsmetadaten ausgeführt werden, ist das Entfernen und Neukonfigurieren der Replikation erforderlich.Actions performed by the CHECKDB process to repair corrupt replication metadata tables require removing and reconfiguring replication.

Führen Sie Folgendes aus, wenn Sie den Befehl DBCC CHECKDB mit der Option REPAIR_ALLOW_DATA_LOSS für eine Benutzerdatenbank oder Verteilungsdatenbank ausführen müssen:If you have to run the DBCC CHECKDB command with the REPAIR_ALLOW_DATA_LOSS option on a user database or distribution database:

  1. Versetzen Sie das System in einen inaktiven Status: Beenden Sie die Aktivität in der Datenbank und allen anderen Datenbanken in der Replikationstopologie, und versuchen Sie anschließend, alle Knoten zu synchronisieren.Quiesce the system: Stop activity on the database and at all other databases in the replication topology, and then try to synchronize all nodes. Weitere Informationen finden Sie unter Versetzen einer Replikationstopologie in einen inaktiven Status (Replikationsprogrammierung mit Transact-SQL).For more information, see Quiesce a Replication Topology (Replication Transact-SQL Programming).
  2. Führen Sie DBCC CHECKDB aus.Execute DBCC CHECKDB.
  3. Wenn der Bericht von DBCC CHECKDB Reparaturen für Tabellen in der Verteilungsdatenbank oder für Tabellen mit Replikationsmetadaten in einer Benutzerdatenbank einschließt, entfernen Sie die Replikation, und konfigurieren Sie sie neu.If the DBCC CHECKDB report includes repairs for any tables in the distribution database or any replication metadata tables in a user database, remove and reconfigure replication. Weitere Informationen finden Sie unter Deaktivieren der Veröffentlichung und Verteilung.For more information, see Disable Publishing and Distribution.
  4. Wenn der Bericht von DBCC CHECKDB Reparaturen für replizierte Tabellen enthält, führen Sie eine Datenüberprüfung aus, um zu bestimmen, ob Unterschiede zwischen den Daten in den Veröffentlichungs- und Abonnementdatenbanken bestehen.If the DBCC CHECKDB report includes repairs for any replicated tables, perform data validation to determine whether there are differences between the data in the publication and subscription databases.

ResultsetsResult Sets

DBCC CHECKDB gibt das folgende Resultset zurück.DBCC CHECKDB returns the following result set. Die Werte können variieren, es sei denn, die Optionen ESTIMATEONLY, PHYSICAL_ONLY oder NO_INFOMSGS werden angegeben:The values might vary except when the ESTIMATEONLY, PHYSICAL_ONLY, or NO_INFOMSGS options are specified:

 DBCC results for 'model'.    

 Service Broker Msg 9675, Level 10, State 1: Message Types analyzed: 13.    

 Service Broker Msg 9676, Level 10, State 1: Service Contracts analyzed: 5.    

 Service Broker Msg 9667, Level 10, State 1: Services analyzed: 3.    

 Service Broker Msg 9668, Level 10, State 1: Service Queues analyzed: 3.    

 Service Broker Msg 9669, Level 10, State 1: Conversation Endpoints analyzed: 0.    

 Service Broker Msg 9674, Level 10, State 1: Conversation Groups analyzed: 0.    

 Service Broker Msg 9670, Level 10, State 1: Remote Service Bindings analyzed: 0.    

 DBCC results for 'sys.sysrowsetcolumns'.    

 There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.    

 DBCC results for 'sys.sysrowsets'.    

 There are 97 rows in 1 pages for object 'sys.sysrowsets'.    

 DBCC results for 'sysallocunits'.    

 There are 195 rows in 3 pages for object 'sysallocunits'.    

 There are 0 rows in 0 pages for object "sys.sysasymkeys".    

 DBCC results for 'sys.syssqlguides'.    

 There are 0 rows in 0 pages for object "sys.syssqlguides".    

 DBCC results for 'sys.queue_messages_1977058079'.    

 There are 0 rows in 0 pages for object "sys.queue_messages_1977058079".    

 DBCC results for 'sys.queue_messages_2009058193'.    

 There are 0 rows in 0 pages for object "sys.queue_messages_2009058193".    

 DBCC results for 'sys.queue_messages_2041058307'.    

 There are 0 rows in 0 pages for object "sys.queue_messages_2041058307".    

 CHECKDB found 0 allocation errors and 0 consistency errors in database 'model'.    

 DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

DBCC CHECKDB gibt das folgende Resultset (die folgende Meldung) zurück, wenn NO_INFOMSGS angegeben wird:DBCC CHECKDB returns the following result set (message) when NO_INFOMSGS is specified:

 The command(s) completed successfully.

DBCC CHECKDB gibt das folgende Resultset zurück, wenn PHYSICAL_ONLY angegeben wird:DBCC CHECKDB returns the following result set when PHYSICAL_ONLY is specified:

 DBCC results for 'model'.    

 CHECKDB found 0 allocation errors and 0 consistency errors in database 'master'.  

 DBCC execution completed. If DBCC printed error messages, contact your system administrator.

DBCC CHECKDB gibt das folgende Resultset zurück, wenn ESTIMATEONLY angegeben wird.DBCC CHECKDB returns the following result set when ESTIMATEONLY is specified.

 Estimated TEMPDB space needed for CHECKALLOC (KB)    

 -------------------------------------------------  

 13   

 (1 row(s) affected)   

 Estimated TEMPDB space needed for CHECKTABLES (KB)    

 --------------------------------------------------    

 57 

 (1 row(s) affected)  

 DBCC execution completed. If DBCC printed error messages, contact your system administrator.

BerechtigungenPermissions

Erfordert die Mitgliedschaft in der festen Serverrolle „sysadmin“ oder der festen Datenbankrolle „db_owner“.Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

BeispieleExamples

A.A. Überprüfen der aktuellen und einer anderen DatenbankChecking both the current and another database

Im folgenden Beispiel wird DBCC CHECKDB für die aktuelle Datenbank und für die AdventureWorks2012AdventureWorks2012-Datenbank ausgeführt.The following example executes DBCC CHECKDB for the current database and for the AdventureWorks2012AdventureWorks2012 database.

-- Check the current database.    
DBCC CHECKDB;    
GO    
-- Check the AdventureWorks2012 database without nonclustered indexes.    
DBCC CHECKDB (AdventureWorks2012, NOINDEX);    
GO    

B.B. Überprüfen der aktuellen Datenbank, wobei Informationsmeldungen unterdrückt werdenChecking the current database, suppressing informational messages

Im folgenden Beispiel wird die aktuelle Datenbank überprüft; alle Informationsmeldungen werden unterdrückt.The following example checks the current database and suppresses all informational messages.

DBCC CHECKDB WITH NO_INFOMSGS;    
GO    

Weitere Informationen finden Sie unterSee Also

DBCC (Transact-SQL)DBCC (Transact-SQL)
Anzeigen der Größe der Datei mit geringer Dichte einer Datenbank-Momentaufnahme (SQL Server)View the Size of the Sparse File of a Database Snapshot (Transact-SQL)
sp_helpdb (Transact-SQL)sp_helpdb (Transact-SQL)
Systemtabellen (Transact-SQL)System Tables (Transact-SQL)