Delen via


DBCC CHECKFILEGROUP (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Controleert de toewijzing en structurele integriteit van alle tabellen en geïndexeerde weergaven in de opgegeven bestandsgroep van de huidige database.

Transact-SQL syntaxisconventies

Syntaxis

DBCC CHECKFILEGROUP
[
    [ ( { filegroup_name | filegroup_id | 0 }
        [ , NOINDEX ]
  ) ]
    [ WITH
        {
            [ ALL_ERRORMSGS | NO_INFOMSGS ]
            [ , TABLOCK ]
            [ , ESTIMATEONLY ]
            [ , PHYSICAL_ONLY ]
            [ , MAXDOP  = number_of_processors ]
        }
    ]
]

Argumenten

filegroup_name

De naam van de bestandsgroep in de huidige database waarvoor de tabeltoewijzing en structurele integriteit moeten worden gecontroleerd. Als dit niet is opgegeven of als 0 is opgegeven, is de standaardwaarde de primaire bestandsgroep. Bestandsgroepnamen moeten voldoen aan de regels voor id's.
filegroup_name kan geen FILESTREAM-bestandsgroep zijn.

filegroup_id

Het id-nummer (filegroup identification) in de huidige database waarvoor de toewijzing van tabellen en structurele integriteit moet worden gecontroleerd.

NOINDEX

Hiermee geeft u op dat intensieve controles van niet-geclusterde indexen voor gebruikerstabellen niet mogen worden uitgevoerd. Dit vermindert de totale uitvoeringstijd. NOINDEX heeft geen invloed op systeemtabellen, omdat DBCC CHECKFILEGROUP altijd alle systeemtabelindexen controleert.

ALL_ERRORMSGS

Geeft een onbeperkt aantal fouten per object weer. Alle foutberichten worden standaard weergegeven. Het opgeven of weglaten van deze optie heeft geen effect.

NO_INFOMSGS

Onderdrukt alle informatieve berichten.

TABLOCK

Zorgt ervoor dat DBCC CHECKFILEGROUP vergrendelingen krijgt in plaats van een momentopname van een interne database te gebruiken.

ALLEEN SCHATTING

Geeft de geschatte hoeveelheid tempdb ruimte weer die nodig is om DBCC CHECKFILEGROUP uit te voeren met alle andere opgegeven opties.

PHYSICAL_ONLY

Hiermee wordt de controle beperkt tot de integriteit van de fysieke structuur van de pagina, recordheaders en de fysieke structuur van B-trees. Deze controle is ontworpen om een kleine overheadcontrole van de fysieke consistentie van de bestandsgroep te bieden. Deze controle kan ook gescheurde pagina's detecteren en veelvoorkomende hardwarefouten die gegevens kunnen in gevaar brengen. Een volledige uitvoering van DBCC CHECKFILEGROUP kan aanzienlijk langer duren dan in eerdere versies. Dit gedrag treedt op vanwege de volgende redenen:

  • De logische controles zijn uitgebreider.
  • Sommige onderliggende structuren die moeten worden gecontroleerd, zijn complexer.
  • Er zijn veel nieuwe controles geïntroduceerd om de nieuwe functies op te nemen.

Notitie

Documentatie maakt gebruik van de term B-tree in het algemeen in verwijzing naar indexen. In rijstore-indexen implementeert de database-engine een B+-structuur. Dit geldt niet voor columnstore-indexen of indexen voor tabellen die zijn geoptimaliseerd voor geheugen. Zie de SQL Server- en Azure SQL-indexarchitectuur en ontwerphandleidingvoor meer informatie.

Daarom kan het gebruik van de optie PHYSICAL_ONLY leiden tot een veel kortere runtime voor DBCC CHECKFILEGROUP op grote bestandsgroepen en wordt daarom aanbevolen voor frequent gebruik op productiesystemen. We raden u nog steeds aan om regelmatig een volledige uitvoering van DBCC CHECKFILEGROUP uit te voeren. De frequentie van deze uitvoeringen is afhankelijk van factoren die specifiek zijn voor individuele bedrijven en productieomgevingen. PHYSICAL_ONLY impliceert altijd NO_INFOMSGS en is niet toegestaan bij een van de reparatieopties.

Notitie

Als u PHYSICAL_ONLY opgeeft, worden DBCC CHECKFILEGROUP alle controles van FILESTREAM-gegevens overgeslagen.

MAXDOP

van toepassing op: SQL Server 2014 Service Pack 2 en latere versies

Overschrijft de maximale mate van parallelle uitvoering configuratieoptie van sp_configure voor de instructie. De MAXDOP kan de waarde overschrijden die is geconfigureerd met sp_configure. Als MAXDOP de waarde overschrijdt die is geconfigureerd met Resource Governor, gebruikt de Database Engine de MAXDOP-waarde van Resource Governor, zoals beschreven in ALTER WORKLOAD GROUP (Transact-SQL). Alle semantische regels die worden gebruikt met de maximale mate van parallelle configuratie zijn van toepassing wanneer u de MAXDOP queryhint gebruikt. Zie De maximale mate van parallelle configuratie van server configurerenvoor meer informatie.

Voorzichtigheid

Als MAXDOP is ingesteld op nul, kiest de server de maximale mate van parallelle uitvoering.

Opmerkingen

DBCC CHECKFILEGROUP en DBCC CHECKDB zijn vergelijkbare DBCC-opdrachten. Het belangrijkste verschil is dat DBCC CHECKFILEGROUP is beperkt tot de enkelvoudige opgegeven bestandsgroep en vereiste tabellen.

DBCC CHECKFILEGROUP voert de volgende opdrachten uit:

Het uitvoeren van DBCC CHECKALLOC of DBCC CHECKTABLE afzonderlijk van DBCC CHECKFILEGROUP is niet vereist.

Momentopname van interne database

DBCC CHECKFILEGROUP maakt gebruik van een momentopname van een interne database om de transactionele consistentie te bieden die nodig is om deze controles uit te voeren. Zie voor meer informatie De grootte van het Sparse-bestand van een momentopname van een database (Transact-SQL) en het gedeelte databasemomentopname van dbcc weergeven sectie in DBCC (Transact-SQL).

Als er geen momentopname kan worden gemaakt of als de optie TABLOCK is opgegeven, verkrijgt DBCC CHECKFILEGROUP vergrendelingen om de vereiste consistentie te verkrijgen. In dit geval is een exclusieve databasevergrendeling vereist om de toewijzingscontroles uit te voeren en zijn gedeelde tabelvergrendelingen vereist om de tabelcontroles uit te voeren. TABLOCK zorgt ervoor dat DBCC CHECKFILEGROUP sneller wordt uitgevoerd op een database onder zware belasting, maar vermindert de gelijktijdigheid die beschikbaar is voor de database terwijl DBCC CHECKFILEGROUP wordt uitgevoerd.

Notitie

Als DBCC CHECKFILEGROUP wordt uitgevoerd op tempdb worden geen toewijzingscontroles uitgevoerd en moeten gedeelde tabelvergrendelingen worden verkregen om tabelcontroles uit te voeren. Dit komt omdat databasemomentopnamen om prestatieredenen niet beschikbaar zijn op tempdb. Dit betekent dat de vereiste transactionele consistentie niet kan worden verkregen.

Objecten parallel controleren

Standaard voert DBCC CHECKFILEGROUP parallelle controle van objecten uit. De mate van parallelle uitvoering wordt automatisch bepaald door de queryprocessor. De maximale mate van parallelle uitvoering wordt net als parallelle query's geconfigureerd. Gebruik sp_configureom het maximum aantal processors te beperken dat beschikbaar is voor DBCC-controles. Zie De maximale mate van parallelle configuratie van server configurerenvoor meer informatie.

Parallelle controle kan worden uitgeschakeld met traceringsvlag 2528. Zie traceringsvlagmen (Transact-SQL)voor meer informatie.

Niet-geclusterde indexen voor afzonderlijke bestandsgroepen

Als een niet-geclusterde index in de opgegeven bestandsgroep is gekoppeld aan een tabel in een andere bestandsgroep, wordt de index niet gecontroleerd omdat de basistabel niet beschikbaar is voor validatie.

Als een tabel in de opgegeven bestandsgroep een niet-geclusterde index in een andere bestandsgroep heeft, wordt de niet-geclusterde index niet gecontroleerd vanwege het volgende:

  • De basistabelstructuur is niet afhankelijk van de structuur van een niet-geclusterde index. Niet-geclusterde indexen hoeven niet te worden gescand om de basistabel te valideren.
  • De opdracht DBCC CHECKFILEGROUP valideert alleen objecten in de opgegeven bestandsgroep.

Een geclusterde index en een tabel kunnen zich niet in verschillende bestandsgroepen bevinden; Daarom zijn de vorige overwegingen alleen van toepassing op niet-geclusterde indexen.

Gepartitioneerde tabellen in afzonderlijke bestandsgroepen

Wanneer een gepartitioneerde tabel bestaat in meerdere bestandsgroepen, DBCC CHECKFILEGROUP controleert u de partitierijsets die aanwezig zijn op de opgegeven bestandsgroep en negeert u de rijensets in de andere bestandsgroepen. Informatief bericht 2594 geeft de partities aan die niet zijn gecontroleerd. Niet-geclusterde indexen die niet aanwezig zijn in de opgegeven bestandsgroep, worden niet gecontroleerd.

DBCC-foutberichten begrijpen

Nadat de opdracht DBCC CHECKFILEGROUP is voltooid, wordt er een bericht naar het SQL Server-foutenlogboek geschreven. Als de DBCC-opdracht is uitgevoerd, geeft het bericht een geslaagde voltooiing aan en de hoeveelheid tijd die de opdracht heeft uitgevoerd. Als de DBCC-opdracht stopt voordat de controle wordt voltooid vanwege een fout, geeft het bericht aan dat de opdracht is beëindigd, een statuswaarde en de hoeveelheid tijd die de opdracht heeft uitgevoerd. In de volgende tabel worden de statuswaarden vermeld en beschreven die in het bericht kunnen worden opgenomen.

Staat Beschrijving
0 Foutnummer 8930 is gegenereerd. Dit geeft een beschadiging van metagegevens aan waardoor de DBCC-opdracht is beëindigd.
1 Foutnummer 8967 is gegenereerd. Er is een interne DBCC-fout opgetreden.
2 Er is een fout opgetreden tijdens het herstellen van de database in de noodmodus.
3 Dit geeft een beschadiging van metagegevens aan waardoor de DBCC-opdracht is beëindigd.
4 Er is een schending van assert of toegang gedetecteerd.
5 Er is een onbekende fout opgetreden die de DBCC-opdracht heeft beëindigd.

Foutrapportage

Er wordt een minidumpbestand (SQLDUMP<nnnn>.txt) gemaakt in de map SQL Server LOG wanneer DBCC CHECKFILEGROUP een beschadigingsfout detecteert. Wanneer de functies voor het verzamelen van functiegebruik en functies voor foutrapportage zijn ingeschakeld voor het exemplaar van SQL Server, wordt het bestand automatisch doorgestuurd naar Microsoft. De verzamelde gegevens worden gebruikt om de functionaliteit van SQL Server te verbeteren.

Het dumpbestand bevat de resultaten van de opdracht DBCC CHECKFILEGROUP en aanvullende diagnostische uitvoer. Het bestand heeft beperkte discretionaire toegangsbeheerlijsten (DACL's). Toegang is beperkt tot het SQL Server-serviceaccount en leden van de rol sysadmin. De rol sysadmin bevat standaard alle leden van de groep Windows BUILTIN\Administrators en de groep van de lokale beheerder. De DBCC-opdracht mislukt niet als het proces voor het verzamelen van gegevens mislukt.

Fouten oplossen

Als er fouten worden gerapporteerd door DBCC CHECKFILEGROUP, raden we u aan om de database te herstellen vanuit de back-up van de database. Herstelopties kunnen niet worden opgegeven voor DBCC CHECKFILEGROUP.

Als er geen back-up bestaat, corrigeert het uitvoeren van DBCC CHECKDB met een opgegeven hersteloptie de gerapporteerde fouten. De hersteloptie die u wilt gebruiken, wordt opgegeven aan het einde van de lijst als er fouten zijn gerapporteerd. Als u de fouten corrigeert met behulp van de optie REPAIR_ALLOW_DATA_LOSS, moeten sommige pagina's en daarom gegevens worden verwijderd.

Resultatensets

DBCC CHECKFILEGROUP retourneert de volgende resultatenset (waarden kunnen variëren):

  • Behalve wanneer ESTIMATEONLY of NO_INFOMSGS is opgegeven.
  • Als er voor de huidige database geen database is opgegeven, of er dan wel of geen opties (behalve NOINDEX) zijn opgegeven.
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.

Als NO_INFOMSGS is opgegeven, retourneert DBCC CHECKFILEGROUP:

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

Als ESTIMATEONLY is opgegeven, retourneert DBCC CHECKFILEGROUP (waarden kunnen variëren):

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.

Machtigingen

Vereist lidmaatschap van de sysadmin vaste serverfunctie of de db_owner vaste databaserol.

Voorbeelden

Een. Controleer de PRIMAIRE bestandsgroep in de database

In het volgende voorbeeld wordt de primaire bestandsgroep van de huidige database gecontroleerd.

DBCC CHECKFILEGROUP;
GO

B. Controleer de AdventureWorks PRIMARY-bestandsgroep zonder niet-geclusterde indexen

In het volgende voorbeeld wordt de primaire bestandsgroep van de AdventureWorks2022-database gecontroleerd (met uitzondering van niet-geclusterde indexen) door het identificatienummer van de primaire bestandsgroep op te geven en door NOINDEXop te geven.

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

C. Controleer de PRIMAIRE bestandsgroep met opties

In het volgende voorbeeld wordt de primaire bestandsgroep van de master database gecontroleerd en wordt de optie ESTIMATEONLYopgegeven.

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

Zie ook