Megosztás a következőn keresztül:


DBCC CHECKFILEGROUP (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példány

Ellenőrzi az aktuális adatbázis megadott fájlcsoportjában lévő összes tábla és indexelt nézet lefoglalását és szerkezeti integritását.

Transact-SQL szintaxis konvenciói

Szintaxis

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

Érvek

filegroup_name

Annak a fájlcsoportnak a neve az aktuális adatbázisban, amelynél ellenőrizni szeretné a táblafoglalást és a szerkezeti integritást. Ha nincs megadva, vagy ha 0 van megadva, az alapértelmezett az elsődleges fájlcsoport. A fájlcsoportok nevének meg kell felelnie azonosítók.
filegroup_name nem lehet FILESTREAM-fájlcsoport.

filegroup_id

A fájlcsoport-azonosító (ID) száma az aktuális adatbázisban, amelynél ellenőrizni szeretné a táblafoglalást és a szerkezeti integritást.

NOINDEX

Azt határozza meg, hogy a felhasználói táblák nem konklúziós indexeinek intenzív ellenőrzése ne történjen meg. Ez csökkenti a teljes végrehajtási időt. NOINDEX nincs hatással a rendszertáblákra, mert DBCC CHECKFILEGROUP mindig ellenőrzi az összes rendszertábla-indexet.

ALL_ERRORMSGS

Objektumonként korlátlan számú hibát jelenít meg. Alapértelmezés szerint minden hibaüzenet megjelenik. Ennek a beállításnak a megadása vagy kihagyása nincs hatással.

NO_INFOMSGS

Letiltja az összes tájékoztató üzenetet.

TABLOCK

A DBCC CHECKFILEGROUP belső adatbázis-pillanatkép használata helyett zárolások lekérését okozza.

CSAK BECSLÉS

Megjeleníti a tempdb futtatásához szükséges DBCC CHECKFILEGROUP terület becsült mennyiségét az összes többi megadott beállítással.

PHYSICAL_ONLY

Korlátozza az oldal fizikai szerkezetének integritását, a rekordfejléceket és a B-fák fizikai szerkezetét. Úgy tervezték, hogy a fájlcsoport fizikai konzisztenciájának kis mértékű terhelésellenőrzését biztosítsa, ez az ellenőrzés képes észlelni az elszakított oldalakat és az adatokat veszélyeztető gyakori hardverhibákat is. A DBCC CHECKFILEGROUP teljes futtatása jelentősen tovább tarthat, mint a korábbi verziókban. Ez a viselkedés a következő okok miatt fordul elő:

  • A logikai ellenőrzések átfogóbbak.
  • Az ellenőrizendő mögöttes struktúrák némelyike összetettebb.
  • Számos új ellenőrzés lett bevezetve, hogy az új funkciókat is tartalmazza.

Jegyzet

A dokumentáció általában a B-fa kifejezést használja az indexekre hivatkozva. A sorkataszterekben az adatbázismotor egy B+ fát implementál. Ez nem vonatkozik az oszlopcentrikus indexekre vagy a memóriaoptimalizált táblák indexére. További információ: SQL Server és Azure SQL index architektúrája és tervezési útmutatója.

Ezért a PHYSICAL_ONLY beállítás használata sokkal rövidebb futási időt okozhat a DBCC CHECKFILEGROUP nagy méretű fájlcsoportokon, ezért az éles rendszereken való gyakori használathoz ajánlott. Továbbra is azt javasoljuk, hogy rendszeresen végezze el a DBCC CHECKFILEGROUP teljes körű futtatását. A futtatások gyakorisága az egyes vállalkozásokra és éles környezetekre jellemző tényezőktől függ. PHYSICAL_ONLY mindig NO_INFOMSGS jelent, és a javítási lehetőségek egyikével sem engedélyezett.

Jegyzet

A PHYSICAL_ONLY megadása miatt DBCC CHECKFILEGROUP kihagyja a FILESTREAM-adatok összes ellenőrzését.

MAXDOP

A: SQL Server 2014 Service Pack 2 és újabb verziókra vonatkozik

Felülbírálja a maximális párhuzamossági fokotsp_configure konfigurálási beállítását az utasításhoz. A MAXDOP túllépheti a sp_configureáltal konfigurált értéket. Ha MAXDOP túllépi az Erőforrás-vezérlővel konfigurált értéket, az adatbázismotor a Resource Governor MAXDOP értéket használja, amelyet ALTER SZÁMÍTÁSI FELADATCSOPORT (Transact-SQL). A MAXDOP lekérdezési tipp használatakor minden olyan szemantikai szabály alkalmazható, amely a párhuzamossági konfiguráció maximális fokával használható. További információ: A kiszolgáló konfigurációs beállításainak maximális fokának konfigurálása.

Figyelmeztet

Ha MAXDOP nullára van állítva, akkor a kiszolgáló a párhuzamosság maximális fokát választja ki.

Megjegyzések

DBCC CHECKFILEGROUP és DBCC CHECKDB hasonló DBCC-parancsok. A fő különbség az, hogy a DBCC CHECKFILEGROUP az egyetlen megadott fájlcsoportra és a szükséges táblákra korlátozódik.

DBCC CHECKFILEGROUP a következő parancsokat hajtja végre:

Nem szükséges a DBCC CHECKALLOC vagy DBCC CHECKTABLEDBCC CHECKFILEGROUP külön futtatása.

Belső adatbázis-pillanatkép

DBCC CHECKFILEGROUP egy belső adatbázis-pillanatkép használatával biztosítja a tranzakciós konzisztenciát, amelyet ezeknek az ellenőrzéseknek el kell végeznie. További információ: Adatbázis-pillanatkép ritka fájljának (Transact-SQL) méretének és DBCC belső adatbázis-pillanatkép-használati szakaszának megtekintése DBCC (Transact-SQL).

Ha nem hozható létre pillanatkép, vagy meg van adva a TABLOCK beállítás, DBCC CHECKFILEGROUP zárolja a szükséges konzisztenciát. Ebben az esetben kizárólagos adatbázis-zárolásra van szükség a foglalási ellenőrzések végrehajtásához, és megosztott táblazárolásokra van szükség a táblaellenőrzések végrehajtásához. TABLOCK DBCC CHECKFILEGROUP gyorsabban fut egy nagy terhelésű adatbázison, de csökkenti az adatbázison elérhető egyidejűséget, miközben DBCC CHECKFILEGROUP fut.

Jegyzet

A DBCC CHECKFILEGROUPtempdb futtatása nem végez foglalási ellenőrzéseket, és a táblaellenőrzések végrehajtásához megosztott táblazárakat kell beszereznie. Ennek az az oka, hogy teljesítménybeli okokból az adatbázis-pillanatképek nem érhetők el tempdb. Ez azt jelenti, hogy a szükséges tranzakciós konzisztencia nem kérhető le.

Objektumok ellenőrzése párhuzamosan

Alapértelmezés szerint DBCC CHECKFILEGROUP az objektumok párhuzamos ellenőrzését hajtja végre. A párhuzamosság mértékét a lekérdezésfeldolgozó automatikusan meghatározza. A párhuzamosság maximális foka ugyanúgy van konfigurálva, mint a párhuzamos lekérdezések. A DBCC-ellenőrzéshez elérhető processzorok maximális számának korlátozásához használja a sp_configure. További információ: A kiszolgáló konfigurációs beállításainak maximális fokának konfigurálása.

A párhuzamos ellenőrzés letiltható a 2528-at jelző nyomkövetési jelzővel. További információ: Nyomkövetési jelzők beállítása a DBCC TRACEON használatával.

Nemclustered indexek külön fájlcsoportokon

Ha a megadott fájlcsoport egyik nemclustered indexe egy másik fájlcsoport egyik táblájával van társítva, az index nincs bejelölve, mert az alaptábla nem érhető el ellenőrzésre.

Ha a megadott fájlcsoport egyik táblája nemclustered indexet tartalmaz egy másik fájlcsoportban, a nemclustered index nincs bejelölve a következő miatt:

  • Az alaptábla struktúrája nem függ a nemclustered index szerkezetétől. A nemclustered indexeket nem kell beolvasni az alaptábla ellenőrzéséhez.
  • A DBCC CHECKFILEGROUP parancs csak a megadott fájlcsoportban ellenőrzi az objektumokat.

A fürtözött indexek és a táblák nem lehetnek különböző fájlcsoportokon; ezért a korábbi szempontok csak a nem konklúziós indexekre vonatkoznak.

Particionált táblák külön fájlcsoportokon

Ha egy particionált tábla több fájlcsoporton is létezik, DBCC CHECKFILEGROUP ellenőrzi a megadott fájlcsoporton található partíciósorkészleteket, és figyelmen kívül hagyja a többi fájlcsoport sorhalmazait. A 2594 információs üzenet a nem ellenőrzött partíciókat jelzi. A megadott fájlcsoporton nem található nemclustered indexek nincsenek bejelölve.

A DBCC-hibaüzenetek ismertetése

A DBCC CHECKFILEGROUP parancs befejeződése után a rendszer egy üzenetet ír az SQL Server hibanaplójába. Ha a DBCC parancs sikeresen végrehajtja a parancsot, az üzenet a sikeres befejezést és a parancs futtatásának időtartamát jelzi. Ha a DBCC-parancs hiba miatt leáll az ellenőrzés befejezése előtt, az üzenet azt jelzi, hogy a parancs leállt, egy állapotérték és a parancs futási ideje. Az alábbi táblázat felsorolja és ismerteti az üzenetben szereplő állapotértékeket.

Állam Leírás
0 A 8930-es hibaszám lett előállítva. Ez egy metaadat-sérülést jelez, amely miatt a DBCC parancs leállt.
1 A 8967-es hibaszám ki lett emelve. Belső DBCC-hiba történt.
2 Hiba történt a vészmódú adatbázis javítása során.
3 Ez egy metaadat-sérülést jelez, amely miatt a DBCC parancs leállt.
4 A rendszer érvényességi vagy hozzáférési szabálysértést észlelt.
5 Ismeretlen hiba történt, amely megszakította a DBCC parancsot.

Hibajelentés

Az SQL Server SQLDUMP<nnnn>.txt könyvtárában egy miniképfájl (LOG) jön létre, amikor DBCC CHECKFILEGROUP sérülési hibát észlel. Ha a szolgáltatáshasználati adatgyűjtési és hibajelentési funkciók engedélyezve vannak az SQL Server-példányhoz, a rendszer automatikusan továbbítja a fájlt a Microsoftnak. Az összegyűjtött adatok az SQL Server funkcióinak javítására szolgálnak.

A memóriaképfájl tartalmazza a DBCC CHECKFILEGROUP parancs eredményeit és a további diagnosztikai kimenetet. A fájl korlátozott diszkrecionális hozzáférés-vezérlési listákat (DACL-eket) biztosít. Az hozzáférés az SQL Server szolgáltatásfiókjára és a sysadmin szerepkör tagjaira korlátozódik. Alapértelmezés szerint a sysadmin szerepkör a Windows BUILTIN\Rendszergazdák csoport és a helyi rendszergazda csoport összes tagját tartalmazza. A DBCC parancs nem hiúsul meg, ha az adatgyűjtési folyamat meghiúsul.

Hibák elhárítása

Ha a DBCC CHECKFILEGROUPbármilyen hibát jelez, javasoljuk, hogy visszaállítsa az adatbázist az adatbázis biztonsági mentéséből. A javítási beállítások nem adhatók meg a DBCC CHECKFILEGROUP.

Ha nincs biztonsági másolat, a megadott javítási beállítással rendelkező DBCC CHECKDB futtatása kijavítja a jelentett hibákat. Ha jelentett hibák jelentkeznek, a lista végén meg van adva a használni kívánt javítási lehetőség. A hibák REPAIR_ALLOW_DATA_LOSS beállítással történő kijavításához előfordulhat, hogy egyes oldalakat, így az adatokat is törölni kell.

Eredményhalmazok

DBCC CHECKFILEGROUP a következő eredményhalmazt adja vissza (az értékek eltérőek lehetnek):

  • Kivéve, ha ESTIMATEONLY vagy NO_INFOMSGS van megadva.
  • Az aktuális adatbázis esetében, ha nincs megadva adatbázis, meg van-e adva bármilyen beállítás (NOINDEXkivételével).
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.

Ha NO_INFOMSGS van megadva, DBCC CHECKFILEGROUP a következőt adja vissza:

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

Ha ESTIMATEONLY van megadva, DBCC CHECKFILEGROUP ad vissza (az értékek eltérőek lehetnek):

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.

Engedélyek

A sysadmin rögzített kiszolgálói szerepkörben vagy a db_owner rögzített adatbázis-szerepkörben való tagság szükséges.

Példák

Egy. Az ELSŐDLEGES fájlcsoport ellenőrzése az adatbázisban

Az alábbi példa az aktuális adatbázis elsődleges fájlcsoportját ellenőrzi.

DBCC CHECKFILEGROUP;
GO

B. Az AdventureWorks ELSŐDLEGES fájlcsoportjának ellenőrzése nem konklúziós indexek nélkül

Az alábbi példa a AdventureWorks2025 adatbázis elsődleges fájlcsoportját ellenőrzi (a nemclustered indexek kivételével) az elsődleges fájlcsoport azonosítószámának megadásával és a NOINDEXmegadásával.

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

C. Az ELSŐDLEGES fájlcsoport ellenőrzése beállításokkal

Az alábbi példa ellenőrzi a master adatbázis elsődleges fájlcsoportot, és megadja a ESTIMATEONLYlehetőséget.

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

Lásd még: