DBCC CHECKFILEGROUP (Transact-SQL)

Aktualisiert: 17. November 2008

Überprüft die Zuordnung und strukturelle Integrität aller Tabellen und indizierten Sichten in der angegebenen Dateigruppe der aktuellen Datenbank.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

DBCC CHECKFILEGROUP 
[
    [ ( { filegroup | filegroup_id | 0 } 
        [ , NOINDEX ] 
    ) ]
    [ WITH 
        { 
            [ ALL_ERRORMSGS | NO_INFOMSGS ] 
            [ , TABLOCK ] 
            [ , ESTIMATEONLY ]
            [ , PHYSICAL_ONLY ]  
        } 
    ]
]

Argumente

  • filegroup_name
    Der Name der Dateigruppe in der aktuellen Datenbank, für die die Tabellenzuordnung und strukturelle Integrität überprüft werden sollen. Wenn dieses Argument fehlt oder mit 0 angegeben ist, wird standardmäßig die primäre Dateigruppe verwendet. Dateigruppennamen müssen den Regeln für Bezeichner entsprechen.
  • filegroup_id
    Die Dateigruppen-ID in der aktuellen Datenbank, für die die Tabellenzuordnung und die strukturelle Integrität überprüft werden sollen.
  • NOINDEX
    Legt fest, dass nicht gruppierte Indizes für Benutzertabellen nicht intensiv überprüft werden. Dadurch wird die Ausführungsdauer insgesamt verkürzt. NOINDEX wirkt sich nicht auf Systemtabellen aus, da DBCC CHECKFILEGROUP immer alle Systemtabellenindizes überprüft.
  • ALL_ERRORMSGS
    Zeigt pro Objekt eine unbegrenzte Fehlerzahl an. In SQL Server 2005 Service Pack 3 (SP3) werden standardmäßig alle Fehlermeldungen angezeigt. Das Angeben oder Weglassen dieser Option hat keine Auswirkungen. In vorherigen Versionen von SQL Server werden nur die ersten 200 Fehlermeldungen für jedes Objekt angezeigt, wenn ALL_ERRORMSGS nicht angegeben wird.
  • NO_INFOMSGS
    Alle Informationsmeldungen werden unterdrückt.
  • TABLOCK
    Bewirkt, dass DBCC CHECKFILEGROUP gemeinsame Tabellensperren erhält, anstatt auf einen internen Datenbanksnapshot zurückzugreifen.
  • ESTIMATEONLY
    Zeigt den geschätzten tempdb-Speicherplatz an, der zum Ausführen von DBCC CHECKFILEGROUP mit allen anderen angegebenen Optionen erforderlich ist.
  • PHYSICAL_ONLY
    Beschränkt die Überprüfung auf die Integrität der physischen Struktur der Seite, der Datensatzheader und der physischen Struktur von B-Strukturen. Wurde entworfen, um mit geringem Verwaltungsaufwand eine Überprüfung der physischen Konsistenz der Dateigruppe vorzunehmen. Dabei können auch zerrissene Seiten und häufige Hardwarefehler erkannt werden, die die Daten gefährden können. Die vollständige Ausführung von DBCC CHECKFILEGROUP kann erheblich mehr Zeit in Anspruch nehmen als in vorherigen Versionen. Dieses Verhalten tritt aus den folgenden Gründen auf:

    • Die logischen Überprüfungen sind umfassender.
    • Einige der zu überprüfenden zugrunde liegenden Strukturen sind komplexer.
    • Es wurden viele neue Überprüfungen eingeführt, um die neuen Features zu berücksichtigen.

    Daher hat die Verwendung der PHYSICAL_ONLY-Option möglicherweise eine viel kürzere Ausführungszeit von DBCC CHECKFILEGROUP für große Dateigruppen zur Folge und wird aus diesem Grund für die häufige Verwendung in Produktionssystemen empfohlen. Dennoch ist eine vollständige Ausführung von DBCC CHECKFILEGROUP in regelmäßigen Abständen empfehlenswert. Die Häufigkeit dieser Ausführungsvorgänge hängt von spezifischen Faktoren der einzelnen Unternehmen und Produktionsumgebungen ab. PHYSICAL_ONLY setzt immer NO_INFOMSGS voraus und kann nicht mit einer der Reparaturoptionen verwendet werden.

    Hinweis   Bei Angabe von PHYSICAL_ONLY überspringt DBCC CHECKFILEGROUP alle Prüfungen von FILESTREAM-Daten.

Resultsets

DBCC CHECKFILEGROUP gibt folgendes Resultset zurück (die tatsächlichen Werte können davon abweichen):

  • Es sei denn, ESTIMATEONLY oder NO_INFOMSGS wurde angegeben.
  • Für die aktuelle Datenbank (wenn keine Datenbank angegeben wurde), ob Optionen (außer NOINDEX) angegeben wurden oder nicht.
DBCC results for 'master'.
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 2340 rows in 16 pages for object 'spt_values'.
DBCC results for 'MSreplication_options'.
There are 2 rows in 1 pages for object 'MSreplication_options'.
CHECKFILEGROUP found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Wurde NO_INFOMSGS angegeben, gibt DBCC CHECKFILEGROUP Folgendes zurück:

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

Wurde ESTIMATEONLY angegeben, gibt DBCC CHECKFILEGROUP Folgendes zurück (die tatsächlichen Werte können davon abweichen):

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

(1 row(s) affected)

Estimated TEMPDB space needed for CHECKTABLES (KB) 
-------------------------------------------------- 
207

(1 row(s) affected)

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

Hinweise

DBCC CHECKFILEGROUP und DBCC CHECKDB sind ähnliche DBCC-Befehle. Der Hauptunterschied besteht darin, dass DBCC CHECKFILEGROUP auf die einzelne angegebene Dateigruppe und die erforderlichen Tabellen beschränkt ist.

Von DBCC CHECKFILEGROUP werden die folgenden Befehle ausgeführt:

Eine von DBCC CHECKFILEGROUP getrennte Ausführung von DBCC CHECKALLOC oder DBCC CHECKTABLE ist nicht erforderlich.

Interner Datenbanksnapshot

Zur Bereitstellung der Transaktionskonsistenz, die für diese Prüfungen vorliegen muss, verwendet DBCC CHECKFILEGROUP einen internen Datenbanksnapshot. Weitere Informationen finden Sie unter Grundlegendes zur Größe von Dateien mit geringer Dichte in Datenbanksnapshots und im Abschnitt zur Verwendung des internen DBCC-Datenbanksnapshots in DBCC (Transact-SQL).

Wenn kein Snapshot erstellt werden kann oder die TABLOCK-Option angegeben ist, ruft DBCC CHECKFILEGROUP Sperren ab, um die erforderliche Konsistenz zu erlangen. 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 gemeinsame Tabellensperren erforderlich. Durch TABLOCK wird DBCC CHECKFILEGROUP schneller auf einer Datenbank bei starker Belastung ausgeführt, jedoch wird während der Ausführung von DBCC CHECKFILEGROUP die in der Datenbank verfügbare Parallelität verringert.

ms187332.note(de-de,SQL.90).gifHinweis:
In SQL Server 2005 werden durch das Ausführen von DBCC CHECKFILEGROUP auf tempdb keine Zuordnungsprüfungen veranlasst, und zur Durchführung von Tabellenprüfungen müssen gemeinsame Tabellensperren abgerufen werden. Dies liegt daran, dass auf tempdb aus Leistungsgründen keine Datenbanksnapshots verfügbar sind. Aus diesem Grund lässt sich die erforderliche Transaktionskonsistenz nicht herstellen.

Paralleles Überprüfen von Objekten

Standardmäßig führt DBCC CHECKFILEGROUP eine parallele Überprüfung von Objekten durch. Der Grad der Parallelität wird automatisch durch den Abfrageprozessor festgelegt. Der Höchstgrad für die Parallelität wird genauso konfiguriert wie parallele Abfragen. Verwenden Sie sp_configure, um die maximale Anzahl von Prozessoren zu beschränken, die für DBCC-Überprüfungen verfügbar sind. Weitere Informationen finden Sie unter max degree of parallelism (Option).

Parallele Überprüfungen können durch das Ablaufverfolgungsflag 2528 deaktiviert werden. Weitere Informationen finden Sie unter Ablaufverfolgungsflags (Transact-SQL).

Nicht gruppierte Indizes für separate Dateigruppen

Wird einem nicht gruppierten Index in der angegebenen Dateigruppe eine Tabelle in einer anderen Dateigruppe zugeordnet, wird der Index nicht überprüft, da die Basistabelle nicht für die Überprüfung verfügbar ist. Dies ist ein geändertes Verhalten in SQL Server 2005. In vorherigen Versionen von SQL Server werden der nicht gruppierte Index und die Basistabelle in der anderen Dateigruppe überprüft. Führen Sie DBCC CHECKDB aus, um die nicht gruppierten Indizes und die Basistabellen zu überprüfen.

Wenn eine Tabelle der angegebenen Dateigruppe einen nicht gruppierten Index in einer anderen Dateigruppe besitzt, wird der nicht gruppierte Index aus folgenden Gründen nicht überprüft:

  • Die Basistabellenstruktur ist unabhängig von der Struktur eines nicht gruppierten Indexes. Nicht gruppierte Indizes müssen zur Überprüfung der Gültigkeit der Basistabelle nicht durchsucht werden.
  • Mit dem Befehl DBCC CHECKFILEGROUP werden nur Objekte in der angegebenen Dateigruppe überprüft.

Ein gruppierter Index und eine Tabelle dürfen sich nicht in unterschiedlichen Dateigruppen befinden. Die vorausgegangenen Ausführungen gelten daher nur für nicht gruppierte Indizes.

Partitionierte Tabellen für separate Dateigruppen

In Versionen von SQL Server 2005 vor Service Pack 2 (SP2) überprüft DBCC CHECKFILEGROUP eine partitionierte Tabelle nur dann, wenn sich die gesamte Tabelle auf die angegebene Dateigruppe bezieht. Wenn die Tabelle über mehrere Dateigruppen verteilt ist, wird die Tabelle ignoriert. Wenn in SP2 eine partitionierte Tabelle für mehrere Dateigruppen vorhanden ist, überprüft DBCC CHECKFILEGROUP die Partitionsrowsets, die für die angegebene Dateigruppe vorhanden sind, und ignoriert die Rowsets in den anderen Dateigruppen. In der Informationsmeldung 2594 werden die nicht überprüften Partitionen angegeben. Nicht gruppierte Indizes, die nicht in der angegebenen Dateigruppe vorhanden sind, werden nicht überprüft.

Grundlegendes zu DBCC-Fehlermeldungen

Nach Abschluss des Befehls DBCC CHECKFILEGROUP wird eine Meldung im SQL Server-Fehlerprotokoll verzeichnet. 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, wird in einer Meldung angezeigt, dass der Befehl beendet wurde. Außerdem werden 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.

Status Beschreibung

0

Fehlernummer 8930 wurde ausgelöst. Dies weist auf beschädigte Metadaten als Ursache für das Beenden des DBCC-Befehls hin.

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 als Ursache für das Beenden des DBCC-Befehls hin.

4

Eine Assertations- oder Zugriffsverletzung wurde entdeckt.

5

Ein unbekannter Fehler ist aufgetreten, durch den der DBCC-Befehl beendet wurde.

Fehlerberichterstellung

In SQL Server 2005 Service Pack 1 (SP1) wird jedes Mal eine Minidumpdatei (SQLDUMPnnnn.txt) im SQL Server-Verzeichnis LOG erstellt, wenn DBCC CHECKFILEGROUP einen Fehler durch eine Beschädigung erkennt. Wenn die Features zur Erfassung von Featureverwendungsdaten und zur Fehlerberichterstellung für die SQL Server-Instanz aktiviert sind, wird die Datei automatisch an Microsoft weitergeleitet. Die gesammelten Daten werden zur Verbesserung der Funktionalität von SQL Server verwendet. Weitere Informationen finden Sie unter Einstellungen für Fehler- und Verwendungsberichte.

Die Sicherungsdatei enthält die Ergebnisse des DBCC CHECKFILEGROUP-Befehls sowie eine zusätzliche Diagnoseausgabe. Die Datei hat eingeschränkte freigegebene Zugriffssteuerungslisten (Discretionary Access Control List, DACL). Der Zugriff ist auf das SQL Server-Dienstkonto und Mitglieder der sysadmin-Rolle beschränkt. Die sysadmin-Rolle enthält standardmäßig alle Mitglieder der Windows-Gruppe VORDEFINIERT\Administratoren und der Gruppe lokaler Administratoren. Ein Fehler bei der Datensammlung verursacht keinen Fehler des DBCC-Befehls.

Auflösen von Fehlern

Wenn Fehler von DBCC CHECKFILEGROUP gemeldet werden, wird eine Wiederherstellung der Datenbank aus der Datenbanksicherung empfohlen. Beachten Sie, dass für DBCC CHECKFILEGROUP keine Reparaturoptionen angegeben werden können.

Wenn keine Sicherung vorhanden ist, lassen sich die gemeldeten Fehler durch Ausführen von DBCC CHECKDB mit einer Reparaturoption beheben. Welche Reparaturoption dabei zu verwenden ist, wird am Ende der Liste mit den gemeldeten Fehlern angegeben. Wenn die Fehlerkorrektur mithilfe der Option REPAIR_ALLOW_DATA_LOSS erfolgen soll, müssen möglicherweise einige Seiten, und damit auch Daten, gelöscht werden.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner.

Beispiele

A. Überprüfen der PRIMARY-Dateigruppe in der AdventureWorks-Datenbank

Im folgenden Beispiel wird die primäre Dateigruppe der AdventureWorks-Datenbank überprüft.

USE AdventureWorks;
GO
DBCC CHECKFILEGROUP;
GO

B. Überprüfen der PRIMARY-Dateigruppe von AdventureWorks ohne nicht gruppierte Indizes

Im folgenden Beispiel wird die primäre Dateigruppe der AdventureWorks -Datenbank (unter Ausschluss nicht gruppierter Indizes) überprüft. Zu diesem Zweck werden die ID der primären Dateigruppe und NOINDEX angegeben.

USE AdventureWorks;
GO
DBCC CHECKFILEGROUP (1, NOINDEX);
GO

C. Überprüfen der PRIMARY-Dateigruppe mit Optionen

Im folgenden Beispiel wird die primäre Dateigruppe der master-Datenbank überprüft. Dabei wird die Option ESTIMATEONLY angegeben.

USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;

Siehe auch

Verweis

DBCC (Transact-SQL)
FILEGROUP_ID (Transact-SQL)
sp_helpfile (Transact-SQL)
sp_helpfilegroup (Transact-SQL)
sys.sysfilegroups (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
DBCC CHECKALLOC (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)

Andere Ressourcen

Physische Datenbankarchitektur

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

17. November 2008

Neuer Inhalt:
  • In der Definition von ALL_ERRORMSGS wird die neue Funktionalität von SP3 beschrieben.

12. Dezember 2006

Neuer Inhalt:
  • Im Abschnitt mit den Hinweisen wurde ein Unterabschnitt "Partitionierte Tabellen für separate Dateigruppen" hinzugefügt. In diesem Abschnitt werden neue Funktionen von SP2 beschrieben.

14. April 2006

Neuer Inhalt:
  • Im Abschnitt mit den Hinweisen wurde ein Unterabschnitt zur Fehlerberichterstellung hinzugefügt. In diesem Abschnitt wird neue Funktionalität von SP1 beschrieben.

05. Dezember 2005

Neuer Inhalt:
  • Beispiel C wurde hinzugefügt.
Geänderter Inhalt:
  • Die Syntax wurde korrigiert.
  • Dem Hinweisabschnitt wurden Informationen zu Meldungen im SQL Server-Fehlerprotokoll und Beschreibungen von Statuswerten hinzugefügt.
  • Hinweisabschnitt für nicht gruppierte Indizes separater Dateigruppen wurde hinsichtlich des Verhaltens in SQL Server 2005 korrigiert.