Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Kontrollerar allokeringen och den strukturella integriteten för alla tabeller och indexerade vyer i den angivna filgruppen för den aktuella databasen.
Transact-SQL syntaxkonventioner
Syntax
DBCC CHECKFILEGROUP
[
[ ( { filegroup_name | filegroup_id | 0 }
[ , NOINDEX ]
) ]
[ WITH
{
[ ALL_ERRORMSGS | NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
[ , PHYSICAL_ONLY ]
[ , MAXDOP = number_of_processors ]
}
]
]
Argument
filegroup_name
Namnet på filgruppen i den aktuella databasen som tabellallokering och strukturell integritet ska kontrolleras för. Om det inte anges, eller om 0 anges, är standardinställningen den primära filgruppen. Filgruppsnamn måste följa reglerna för identifierare.
filegroup_name kan inte vara en FILESTREAM-filgrupp.
filegroup_id
ID-numret (filegroup identification) i den aktuella databasen för vilken du kan kontrollera tabellallokering och strukturell integritet.
NOINDEX
Anger att intensiva kontroller av icke-grupperade index för användartabeller inte ska utföras. Detta minskar den totala körningstiden.
NOINDEX
påverkar inte systemtabeller eftersom DBCC CHECKFILEGROUP
alltid kontrollerar alla systemtabellindex.
ALL_ERRORMSGS
Visar ett obegränsat antal fel per objekt. Alla felmeddelanden visas som standard. Att ange eller utelämna det här alternativet har ingen effekt.
NO_INFOMSGS
Undertrycker alla informationsmeddelanden.
TABLOCK
Gör att DBCC CHECKFILEGROUP
hämtar lås i stället för att använda en intern databasögonblicksbild.
ENDAST SKATTNING
Visar den uppskattade mängden tempdb
utrymme som krävs för att köra DBCC CHECKFILEGROUP
med alla andra angivna alternativ.
PHYSICAL_ONLY
Begränsar kontrollen till integriteten för sidans fysiska struktur, postrubriker och B-trädens fysiska struktur. Den här kontrollen är utformad för att ge en liten kontroll av filgruppens fysiska konsekvens och kan även identifiera sönderrivna sidor och vanliga maskinvarufel som kan kompromettera data. En fullständig körning av DBCC CHECKFILEGROUP
kan ta betydligt längre tid än i tidigare versioner. Det här beteendet uppstår på grund av följande orsaker:
- De logiska kontrollerna är mer omfattande.
- Vissa av de underliggande strukturer som ska kontrolleras är mer komplexa.
- Många nya kontroller har införts för att inkludera de nya funktionerna.
Not
I dokumentationen används termen B-träd vanligtvis som referens till index. I radlagringsindex implementerar databasmotorn ett B+-träd. Detta gäller inte för kolumnlagringsindex eller index i minnesoptimerade tabeller. Mer information finns i arkitekturen och designguiden för SQL Server och Azure SQL-index.
Därför kan användningen av alternativet PHYSICAL_ONLY
orsaka mycket kortare körning för DBCC CHECKFILEGROUP
på stora filgrupper och rekommenderas därför för frekvent användning i produktionssystem. Vi rekommenderar fortfarande att en fullständig körning av DBCC CHECKFILEGROUP
utförs regelbundet. Frekvensen för dessa körningar beror på faktorer som är specifika för enskilda företag och produktionsmiljöer.
PHYSICAL_ONLY
innebär alltid NO_INFOMSGS
och tillåts inte med något av reparationsalternativen.
Not
Om du anger PHYSICAL_ONLY
kan DBCC CHECKFILEGROUP
hoppa över alla kontroller av FILESTREAM-data.
MAXDOP
gäller för: SQL Server 2014 Service Pack 2 och senare versioner
Åsidosätter maximal grad av parallellitet konfigurationsalternativet för sp_configure
för -instruktionen.
MAXDOP
kan överskrida värdet som konfigurerats med sp_configure
. Om MAXDOP
överskrider det värde som konfigurerats med Resource Governor använder databasmotorn värdet Resource Governor MAXDOP
, som beskrivs i ALTER WORKLOAD GROUP (Transact-SQL). Alla semantiska regler som används med konfigurationsalternativet maximal grad av parallellitet gäller när du använder MAXDOP
frågetips. Mer information finns i Konfigurera den maximala graden av parallellitet serverkonfigurationsalternativ.
Försiktighet
Om MAXDOP
är inställt på noll väljer servern den maximala graden av parallellitet.
Anmärkningar
DBCC CHECKFILEGROUP
och DBCC CHECKDB
är liknande DBCC-kommandon. Den största skillnaden är att DBCC CHECKFILEGROUP
är begränsad till den enda angivna filgruppen och de obligatoriska tabellerna.
DBCC CHECKFILEGROUP
utför följande kommandon:
- DBCC CHECKALLOC i filgruppen.
- DBCC CHECKTABLE för varje tabell och indexerad vy i filgruppen.
Det krävs inte att du kör DBCC CHECKALLOC
eller DBCC CHECKTABLE
separat från DBCC CHECKFILEGROUP
.
Intern databasögonblicksbild
DBCC CHECKFILEGROUP
använder en intern databasögonblicksbild för att ge den transaktionskonsekvens som krävs för att utföra dessa kontroller. Mer information finns i Visa storleken på sparse-filen för en databasögonblicksbild (Transact-SQL) och avsnittet om databasögonblicksbild i DBCC (Transact-SQL).
Om det inte går att skapa en ögonblicksbild eller om alternativet TABLOCK
har angetts DBCC CHECKFILEGROUP
hämtar lås för att få den konsekvens som krävs. I det här fallet krävs ett exklusivt databaslås för att utföra allokeringskontrollerna och delade tabelllås krävs för att utföra tabellkontrollerna.
TABLOCK
gör att DBCC CHECKFILEGROUP
körs snabbare på en databas med hög belastning, men minskar samtidigheten i databasen när DBCC CHECKFILEGROUP
körs.
Not
Att köra DBCC CHECKFILEGROUP
mot tempdb
utför inga allokeringskontroller och måste hämta delade tabelllås för att utföra tabellkontroller. Det beror på att databasögonblicksbilder av prestandaskäl inte är tillgängliga på tempdb
. Det innebär att den transaktionskonsekvens som krävs inte kan erhållas.
Kontrollera objekt parallellt
Som standard utför DBCC CHECKFILEGROUP
parallell kontroll av objekt. Graden av parallellitet bestäms automatiskt av frågeprocessorn. Den maximala graden av parallellitet konfigureras precis som parallella frågor. Om du vill begränsa det maximala antalet tillgängliga processorer för DBCC-kontroll använder du sp_configure. Mer information finns i Konfigurera den maximala graden av parallellitet serverkonfigurationsalternativ.
Parallell kontroll kan inaktiveras med hjälp av spårningsflagga 2528. Mer information finns i Spårningsflaggor (Transact-SQL).
Icke-grupperade index i separata filgrupper
Om ett icke-grupperat index i den angivna filgruppen är associerat med en tabell i en annan filgrupp kontrolleras inte indexet eftersom bastabellen inte är tillgänglig för validering.
Om en tabell i den angivna filgruppen har ett icke-grupperat index i en annan filgrupp kontrolleras inte det icke-grupperade indexet på grund av följande:
- Bastabellstrukturen är inte beroende av strukturen för ett icke-grupperat index. Icke-grupperade index behöver inte genomsökas för att verifiera bastabellen.
- Kommandot
DBCC CHECKFILEGROUP
verifierar endast objekt i den angivna filgruppen.
Ett grupperat index och en tabell kan inte finnas i olika filgrupper. Därför gäller de tidigare övervägandena endast för icke-illustrerade index.
Partitionerade tabeller i separata filgrupper
När det finns en partitionerad tabell i flera filgrupper kontrollerar DBCC CHECKFILEGROUP
de partitionsraderuppsättningar som finns i den angivna filgruppen och ignorerar raduppsättningarna i de andra filgrupperna. Informationsmeddelande 2594 anger de partitioner som inte kontrollerades. Icke-grupperade index som inte finns i den angivna filgruppen kontrolleras inte.
Förstå DBCC-felmeddelanden
När DBCC CHECKFILEGROUP
kommandot har slutförts skrivs ett meddelande till SQL Server-felloggen. Om DBCC-kommandot körs anger meddelandet att det har slutförts och hur lång tid kommandot kördes. Om DBCC-kommandot stoppas innan kontrollen slutförs på grund av ett fel anger meddelandet att kommandot avslutades, ett tillståndsvärde och hur lång tid kommandot kördes. I följande tabell visas och beskrivs de tillståndsvärden som kan inkluderas i meddelandet.
Stat | Beskrivning |
---|---|
0 | Felnummer 8930 har genererats. Detta indikerar en skadad metadata som gjorde att DBCC-kommandot avslutades. |
1 | Felnummer 8967 har genererats. Det uppstod ett internt DBCC-fel. |
2 | Ett fel inträffade under reparationen av databasen i nödläge. |
3 | Detta indikerar en skadad metadata som gjorde att DBCC-kommandot avslutades. |
4 | En kontroll- eller åtkomstöverträdelse har identifierats. |
5 | Ett okänt fel uppstod som avslutade DBCC-kommandot. |
Felrapportering
En minidumpfil (SQLDUMP<nnnn>.txt
) skapas i katalogen SQL Server LOG
när DBCC CHECKFILEGROUP
upptäcker ett fel. När datainsamlingen för funktionsanvändning och felrapporteringsfunktionerna är aktiverade för instansen av SQL Server vidarebefordras filen automatiskt till Microsoft. Insamlade data används för att förbättra SQL Server-funktioner.
Dumpfilen innehåller resultatet av kommandot DBCC CHECKFILEGROUP
och ytterligare diagnostiska utdata. Filen har begränsade diskretionära åtkomstkontrollistor (DACLs). Åtkomsten är begränsad till SQL Server-tjänstkontot och medlemmar i sysadmin roll. Som standard innehåller rollen sysadmin alla medlemmar i gruppen Windows BUILTIN\Administrators och den lokala administratörsgruppen. DBCC-kommandot misslyckas inte om datainsamlingsprocessen misslyckas.
Lösa fel
Om några fel rapporteras av DBCC CHECKFILEGROUP
rekommenderar vi att du återställer databasen från databassäkerhetskopian. Reparationsalternativ kan inte anges för att DBCC CHECKFILEGROUP
.
Om det inte finns någon säkerhetskopia korrigeras felen som rapporteras genom att köra DBCC CHECKDB
med ett angivet reparationsalternativ. Reparationsalternativet som ska användas anges i slutet av listan om rapporterade fel. Att korrigera felen med hjälp av alternativet REPAIR_ALLOW_DATA_LOSS kan kräva att vissa sidor och därför data tas bort.
Resultatuppsättningar
DBCC CHECKFILEGROUP
returnerar följande resultatuppsättning (värdena kan variera):
- Förutom när
ESTIMATEONLY
ellerNO_INFOMSGS
anges. - Om ingen databas har angetts för den aktuella databasen, oavsett om det finns några alternativ (förutom
NOINDEX
) har angetts.
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.
Om NO_INFOMSGS
anges returnerar DBCC CHECKFILEGROUP
:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Om ESTIMATEONLY
anges returnerar DBCC CHECKFILEGROUP
(värdena kan variera):
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.
Behörigheter
Kräver medlemskap i sysadmin fast serverroll eller db_owner fast databasroll.
Exempel
A. Kontrollera PRIMÄR filgrupp i databasen
I följande exempel kontrolleras den primära filgruppen för den aktuella databasen.
DBCC CHECKFILEGROUP;
GO
B. Kontrollera AdventureWorks PRIMARY-filgruppen utan icke-grupperade index
I följande exempel kontrolleras den primära AdventureWorks2022
databasens filgrupp (exklusive icke-grupperade index) genom att ange identifieringsnumret för den primära filgruppen och genom att ange NOINDEX
.
USE AdventureWorks2022;
GO
DBCC CHECKFILEGROUP (1, NOINDEX);
GO
C. Kontrollera DEN PRIMÄRA filgruppen med alternativ
I följande exempel kontrolleras den primära master
databasens filgrupp och alternativet ESTIMATEONLY
anges.
USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;