Dela via


DBCC CHECKFILEGROUP (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure 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:

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 CHECKFILEGROUPrekommenderar 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 eller NO_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 ESTIMATEONLYanges.

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

Se även