DBCC CHECKALLOC (Transact-SQL)DBCC CHECKALLOC (Transact-SQL)

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

Überprüft die Konsistenz von Strukturen der Speicherplatzzuordnung für eine bestimmte Datenbank.Checks the consistency of disk space allocation structures for a specified database.

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

SyntaxSyntax

DBCC CHECKALLOC   
[  
    ( database_name | database_id | 0   
      [ , NOINDEX   
      | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]  
    )  
    [ WITH   
        {   
          [ ALL_ERRORMSGS ]  
          [ , NO_INFOMSGS ]   
          [ , TABLOCK ]   
          [ , ESTIMATEONLY ]   
        }  
    ]  
]  

ArgumenteArguments

database_name | database_id | 0database_name | database_id | 0
Name oder ID der Datenbank, für die die Zuordnung und Seitenverwendung überprüft werden soll.The name or the ID of the database for which to check allocation and page usage. 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 follow the rules for identifiers.

NOINDEXNOINDEX
Gibt an, dass nicht gruppierte Indizes für Benutzertabellen nicht überprüft werden sollen.Specifies that nonclustered indexes for user tables should not be checked.
NOINDEX wird nur aus Gründen der Abwärtskompatibilität beibehalten und hat keine Auswirkungen auf DBCC CHECKALLOC.NOINDEX is maintained for backward compatibility only and does not affect DBCC CHECKALLOC.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Gibt an, dass DBCC CHECKALLOC gefundene Fehler behebt.Specifies that DBCC CHECKALLOC repair the found errors. database_name muss sich im Einzelbenutzermodus befinden.database_name must be in single-user mode.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
Versucht, die gefundenen Fehler zu beheben.Tries to repair any errors that are found. Diese Reparaturen können zu Datenverlusten führen.These repairs can cause some data loss. REPAIR_ALLOW_DATA_LOSS ist die einzige Option, die die Reparatur von Zuordnungsfehlern ermöglicht.REPAIR_ALLOW_DATA_LOSS is the only option that allows for allocation errors to be repaired.

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

REPAIR_REBUILDREPAIR_REBUILD
Nicht verfügbar.Not applicable.
Verwenden Sie die REPAIR-Optionen nur als letzte Möglichkeit.Use the REPAIR options only as a last resort. 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.

WITHWITH
Aktiviert anzugebende Optionen.Enables options to be specified.

ALL_ERRORMSGSALL_ERRORMSGS
Zeigt alle Fehlermeldungen an.Displays all error messages. 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.

NO_INFOMSGSNO_INFOMSGS
Unterdrückt alle Informationsmeldungen und die Anzeige des verwendeten Speicherplatzes.Suppresses all informational messages and the report of space used.

TABLOCKTABLOCK
Bewirkt, dass der DBCC-Befehl eine exklusive Datenbanksperre erhält.Causes the DBCC command to obtain an exclusive database lock.

ESTIMATEONLYESTIMATE ONLY
Zeigt den tempdb-Speicherplatz an, der schätzungsweise erforderlich ist, um DBCC CHECKALLOC auszuführen, wenn alle anderen Optionen angegeben sind.Displays the estimated amount of tempdb space that is required to run DBCC CHECKALLOC when all the other options are specified.

HinweiseRemarks

DBCC CHECKALLOC überprüft die Zuordnung aller Seiten in der Datenbank, unabhängig vom Typ der Seite oder des Objekts, zu dem sie gehören.DBCC CHECKALLOC checks the allocation of all pages in the database, regardless of the type of page or type of object to which they belong. Außerdem überprüft der Befehl die verschiedenen internen Strukturen, mit deren Hilfe diese Seiten und die Beziehungen zwischen ihnen nachverfolgt werden.It also validates the various internal structures that are used to keep track of these pages and the relationships between them. Wird NO_INFOMSGS nicht angegeben, sammelt DBCC CHECKALLOC Informationen zur Speicherplatzverwendung für alle Objekte in der Datenbank.If NO_INFOMSGS is not specified, DBCC CHECKALLOC collects space usage information for all objects in the database. Diese Informationen werden anschließend zusammen mit den gefundenen Fehlern ausgegeben.This information is printed together with any errors that are found.

Hinweis

Die Funktionalität von DBCC CHECKALLOC ist in DBCC CHECKDB und DBCC CHECKFILEGROUP enthalten.The DBCC CHECKALLOC functionality is included in DBCC CHECKDB and DBCC CHECKFILEGROUP. Dies bedeutet, dass Sie DBCC CHECKALLOC nicht gesondert von diesen Anweisungen ausführen müssen.This means that you do not have to run DBCC CHECKALLOC separately from these statements. DBCC CHECKALLOC überprüft keine FILESTREAM-Daten.DBCC CHECKALLOC does not check FILESTREAM data. FILESTREAM speichert BLOBs (Binary Large Objects) im Dateisystem.FILESTREAM stores binary large objects (BLOBS) on the file system.

Interne DatenbankmomentaufnahmeInternal Database Snapshot

DBCC CHECKALLOC verwendet eine internen Datenbankmomentaufnahme, um die für die Ausführung dieser Überprüfungen erforderliche Transaktionskonsistenz bereitzustellen.DBCC CHECKALLOC uses an internal database snapshot to provide the transactional consistency that it needs to perform these checks. Wenn eine Momentaufnahme nicht erstellt werden kann oder TABLOCK angegeben ist, versucht DBCC CHECKALLOC, eine exklusive Sperre (X) für die Datenbank zu erwerben, um die erforderliche Konsistenz zu erhalten.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKALLOC tries to acquire an exclusive (X) lock on the database to obtain the required consistency.

Hinweis

Beim Ausführen von DBCC CHECKALLOC für tempdb werden keine Überprüfungen ausgeführt.Running DBCC CHECKALLOC against tempdb does not perform any 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. Beenden Sie den MSSQLSERVER-Dienst, und starten Sie ihn neu, um Zuordnungsprobleme mit tempdb zu beheben.Stop and start the MSSQLSERVER service to resolve any tempdb allocation issues. Durch diese Aktion wird die tempdb-Datenbank gelöscht und neu erstellt.This action drops and re-creates the tempdb database.

Grundlegendes zu DBCC-FehlermeldungenUnderstanding DBCC Error Messages

Nach Abschluss des Befehls DBCC CHECKALLOC wird eine Meldung im SQL ServerSQL Server-Fehlerprotokoll verzeichnet.After the DBCC CHECKALLOC command finishes, a message is written to the SQL ServerSQL Server error log. Wurde der DBCC-Befehl erfolgreich ausgeführt, zeigt die Meldung den erfolgreichen Abschluss und die Ausführungsdauer des Befehls an.If the DBCC command successfully executes, the message indicates a successful completion and the amount of time that the command ran. 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.If the DBCC command stops before completing the check because of an error, the message indicates 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 beschädigte Metadaten hin, die die Beendigung des DBCC-Befehls verursacht haben.This indicates a metadata corruption that caused the DBCC command to terminate.
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 beschädigte Metadaten hin, die die Beendigung des DBCC-Befehls verursacht haben.This indicates a metadata corruption that caused the DBCC command to terminate.
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 Minidumpdatei (SQLDUMPnnnn.txt) wird jedes Mal im SQL ServerSQL Server-Verzeichnis LOG erstellt, wenn DBCC CHECKALLOC einen Fehler durch eine Beschädigung erkennt.A mini-dump file (SQLDUMPnnnn.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKALLOC detects a corruption error. Falls die Funktionen zur Verwendung der Datensammlung 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 CHECKALLOC-Befehls sowie eine zusätzliche Diagnoseausgabe.The dump file contains the results of the DBCC CHECKALLOC command and additional diagnostic output. Die Datei verfügt über eingeschränkte, besitzverwaltete Zugriffssteuerungslisten (Discretionary Access Control List, DACL).The file has restricted discretionary access-control lists (DACLs). 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 VORDEFINIERT\Administratoren und der Gruppe lokaler Administratoren.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 CHECKALLOC Fehler meldet, ist es empfehlenswert, die Datenbank aus der Datenbanksicherung wiederherzustellen, statt eine Reparatur auszuführen.If DBCC CHECKALLOC reports any errors, we recommend that you restore the database from the database backup instead of running a repair. Ist keine Sicherung vorhanden, können die gemeldeten Fehler durch das Ausführen einer Reparatur behoben werden. Beim Beheben der Fehler ist es jedoch möglicherweise erforderlich, einige Seiten (und somit Daten) zu löschen.If a backup does not exist, running a repair can correct the reported errors; however, correcting the errors might require some pages, and therefore data, to be deleted. Eine Reparatur kann in einer Benutzertransaktion ausgeführt werden.A repair can be performed in a user transaction. Dies ermöglicht ein Rollback der Änderungen.This allows for changes to be rolled back. Falls für Änderungen ein Rollback ausgeführt wird, enthält die Datenbank immer noch Fehler und muss von einer Datensicherung wiederhergestellt werden.If changes 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 ausführen.After the repairs finish, back up the database.

ResultsetsResult Sets

In den folgenden Tabellen werden die von DBCC CHECKALLOC zurückgegebenen Informationen beschrieben.The following tables describe the information that DBCC CHECKALLOC returns.

ElementItem BeschreibungDescription
FirstIAMFirstIAM Nur interne Verwendung.Internal use only.
RootRoot Nur interne Verwendung.Internal use only.
DpagesDpages Anzahl von Datenseiten.Data page count.
Pages usedPages used Zugeordnete Seiten.Allocated pages.
Dedicated extentsDedicated extents Dem Objekt zugeordnete Blöcke.Extents allocated to the object.

Wenn Seiten mit gemischter Zuordnung verwendet werden, kann es Seiten geben, die ohne Blöcke zugeordnet sind.If mixed allocation pages are used, there might be pages allocated without extents.

DBCC CHECKALLOC meldet außerdem eine Zuordnungszusammenfassung für jeden Index und jede Partition in jeder Datei.DBCC CHECKALLOC also reports an allocation summary for each index and partition in each file. In dieser Zusammenfassung wird die Verteilung der Daten beschrieben.This summary describes the distribution of the data.

ElementItem BeschreibungDescription
Zugeordnete SeitenReserved pages Seiten, die für den Index zugeordnet wurden, und nicht verwendete Seiten in zugeordneten Blöcken.Pages allocated to the index and the unused pages in allocated extents.
Verwendete SeitenUsed pages Zugeordnete Seiten, die vom Index verwendet werden.Pages allocated and being used by the index.
Partitions-IDPartition ID Nur interne Verwendung.Internal use only.
Zuordnungseinheits-IDAlloc unit ID Nur interne Verwendung.Internal use only.
Daten in ZeilenIn-row data Seiten enthalten Index- oder Heapdaten.Pages contain index or heap data.
LOB-DatenLOB data Seiten enthalten varchar(max)-, nvarchar(max)-, varbinary(max)-, text-, ntext-, xml- und image-Daten.Pages contain varchar(max), nvarchar(max), varbinary(max), text, ntext, xml, and image data.
ZeilenüberlaufdatenRow-overflow data Seiten enthalten Daten einer Spalte mit variabler Länge, die durch Ausführen eines Pushs außerhalb von Zeilen verschoben wurden.Pages contain variable-length column data that has been pushed off-row.

DBCC CHECKALLOC gibt das folgende Resultset zurück (die tatsächlichen Werte können davon abweichen), außer wenn ESTIMATEONLY oder NO_INFOMSGS angegeben wird.DBCC CHECKALLOC returns the following result set (values may vary), except when ESTIMATEONLY or NO_INFOMSGS is specified.

DBCC results for 'master'.  
***************************************************************  
Table sysobjects                Object ID 1.  
Index ID 1         FirstIAM (1:11)   Root (1:12)    Dpages 22.  
    Index ID 1. 24 pages used in 5 dedicated extents.  
Index ID 2         FirstIAM (1:1368)   Root (1:1362)    Dpages 10.  
    Index ID 2. 12 pages used in 2 dedicated extents.  
Index ID 3         FirstIAM (1:1392)   Root (1:1408)    Dpages 4.  
    Index ID 3. 6 pages used in 0 dedicated extents.  
Total number of extents is 7.  
***************************************************************  
'...'  
***************************************************************  
Table spt_server_info                Object ID 1938105945.  
Index ID 1         FirstIAM (1:520)   Root (1:508)    Dpages 1.  
    Index ID 1. 3 pages used in 0 dedicated extents.  
Total number of extents is 0.  
***************************************************************  
Processed 52 entries in sysindexes for database ID 1.  
File 1. Number of extents = 210, used pages = 1126, reserved pages = 1280.  
           File 1 (number of mixed extents = 73, mixed pages = 184).  
    Object ID 1, Index ID 0, data extents 5, pages 24, mixed extent pages 9.  
'...'  
    Object ID 1938105945, Index ID 0, data extents 0, pages 3, mixed extent pages 3.  
Total number of extents = 210, used pages = 1126, reserved pages = 1280 in this database.  
       (number of mixed extents = 73, mixed pages = 184) in this database.  
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.  
DBCC results for 'master'.  
***************************************************************  
Table sys.sysrowsetcolumns                Object ID 4.  
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). FirstIAM (1:98). Root (1:94). Dpages 7.  
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). 9 pages used in 1 dedicated extents.  
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0.  
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). 0 pages used in 0 dedicated extents.  
Total number of extents is 1.  
...  
***************************************************************  
Processed 201 entries in system catalog for database ID 1.  
File 1. Number of extents = 44, used pages = 300, reserved pages = 345.  
           File 1 (number of mixed extents = 29, mixed pages = 225).  
    Object ID 4, index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data), data extents 1, pages 9, mixed extent pages 8.  
    Object ID 5, index ID 1, partition ID 327680, alloc unit ID 327680 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 7, index ID 1, partition ID 458752, alloc unit ID 458752 (type In-row data), data extents 0, pages 5, mixed extent pages 5.  
    Object ID 8, index ID 0, partition ID 524288, alloc unit ID 524288 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 13, index ID 1, partition ID 851968, alloc unit ID 851968 (type In-row data), data extents 1, pages 9, mixed extent pages 8.  
    Object ID 15, index ID 1, partition ID 983040, alloc unit ID 983040 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 26, index ID 1, partition ID 281474978414592, alloc unit ID 1703937 (type In-row data), data extents 0, pages 3, mixed extent pages 3.  
    Object ID 27, index ID 1, partition ID 281474978480128, alloc unit ID 1769473 (type In-row data), data extents 0, pages 3, mixed extent pages 3.  
    Object ID 27, index ID 2, partition ID 562949955190784, alloc unit ID 1769474 (type In-row data), index extents 0, pages 3, mixed extent pages 3.  
...  
    Object ID 1179151246, index ID 1, partition ID 72057594038845440, alloc unit ID 13435136 (type In-row data), data extents 2, pages 18, mixed extent pages 8.  
    Object ID 1179151246, index ID 2, partition ID 72057594038910976, alloc unit ID 13566208 (type In-row data), index extents 1, pages 16, mixed extent pages 8.  
    Object ID 1911677858, index ID 0, partition ID 72057594039631872, alloc unit ID 15073536 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
Total number of extents = 41, used pages = 289, reserved pages = 323 in this database.  
       (number of mixed extents = 27, mixed pages = 211) in this database.  
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

Wenn ESTIMATEONLY angegeben wird, gibt DBCC CHECKALLOC das folgende Resultset zurück.When ESTIMATEONLY is specified, DBCC CHECKALLOC returns the following result set.

Estimated TEMPDB space needed for CHECKALLOC (KB)   
-------------------------------------------------   
34  

(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

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

-- Check the current database.  
DBCC CHECKALLOC;  
GO  
-- Check the AdventureWorks2012 database.  
DBCC CHECKALLOC (AdventureWorks2012);  
GO  

Weitere Informationen finden Sie unterSee Also

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