Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure 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:
- DBCC CHECKALLOC van de bestandsgroep.
- DBCC CHECKTABLE van elke tabel en geïndexeerde weergave in de bestandsgroep.
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
ofNO_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 NOINDEX
op 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 ESTIMATEONLY
opgegeven.
USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;