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


DBCC CHECKALLOC (Transact-SQL)

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

Ellenőrzi egy adott adatbázis lemezterület-foglalási struktúráinak konzisztenciáját.

Transact-SQL szintaxis konvenciói

Szintaxis

DBCC CHECKALLOC
[
    ( database_name | database_id | 0
      [ , NOINDEX
      | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
    )
    [ WITH
        {
          [ ALL_ERRORMSGS ]
          [ , NO_INFOMSGS ]
          [ , TABLOCK ]
          [ , ESTIMATEONLY ]
        }
    ]
]

Érvek

| database_namedatabase_id | 0

Annak az adatbázisnak a neve vagy azonosítója, amelynek a lefoglalását és az oldalhasználatot ellenőrizni szeretné.

Ha nincs megadva, vagy ha 0 van megadva, a rendszer az aktuális adatbázist használja.

Az adatbázisneveknek követnie kell azonosítókszabályait.

NOINDEX

Azt határozza meg, hogy a felhasználói táblák nemclustered indexeit ne kelljen ellenőrizni.

NOINDEX csak a visszamenőleges kompatibilitás érdekében van fenntartva, és nem befolyásolja DBCC CHECKALLOC.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD

Megadja, hogy DBCC CHECKALLOC javítsa ki a talált hibákat. database_name egyfelhasználós módban kell lennie.

  • REPAIR_ALLOW_DATA_LOSS

    Megpróbálja kijavítani a talált hibákat. Ezek a javítások adatvesztést okozhatnak. REPAIR_ALLOW_DATA_LOSS az egyetlen lehetőség, amely lehetővé teszi a foglalási hibák javítását.

  • REPAIR_FAST

    A szintaxis csak a visszamenőleges kompatibilitás érdekében van fenntartva. A rendszer nem végez javítási műveleteket.

  • REPAIR_REBUILD

    Nem alkalmazható.

Fontos

Csak végső megoldásként használja a JAVÍTÁS lehetőségeket. A hibák kijavításához javasoljuk, hogy készítsen biztonsági másolatot a visszaállításról. A javítási műveletek nem veszik figyelembe a táblákon vagy azok között esetlegesen fennálló korlátozásokat. Ha a megadott tábla egy vagy több korlátozásba ütközik, javasoljuk, hogy a javítási művelet után futtassa DBCC CHECKCONSTRAINTS. Ha javítást kell használnia, futtassa a DBCC CHECKDB javítás nélkül, hogy megtalálja a használni kívánt javítási szintet. Ha a REPAIR_ALLOW_DATA_LOSS szintet használja, javasoljuk, hogy biztonsági másolatot készít az adatbázisról, mielőtt ezzel a beállítással futtatja DBCC CHECKDB.

VAL

Engedélyezi a beállítások megadását.

  • ALL_ERRORMSGS

    Megjeleníti az összes hibaüzenetet. 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 információs üzenetet és a felhasznált térjelentést.

  • TABLOCK

    A DBCC parancs kizárólagos adatbázis-zárolást eredményez.

  • BECSLÉS

    Megjeleníti a tempdb futtatásához szükséges DBCC CHECKALLOC terület becsült mennyiségét, amikor az összes többi beállítás meg van adva.

Megjegyzések

DBCC CHECKALLOC ellenőrzi az adatbázis összes lapjának lefoglalását, függetlenül attól, hogy milyen típusú laphoz vagy objektumtípushoz tartoznak. Emellett ellenőrzi a különböző belső struktúrákat is, amelyekkel nyomon követheti ezeket a lapokat és a köztük lévő kapcsolatokat.

Ha nincs megadva NO_INFOMSGS, DBCC CHECKALLOC az adatbázis összes objektumára vonatkozóan gyűjt helyhasználati információkat. Ez az információ a talált hibákkal együtt jelenik meg.

Jegyzet

A DBCC CHECKALLOC funkció DBCC CHECKDB és DBCC CHECKFILEGROUPrésze. Ez azt jelenti, hogy nem kell külön futtatnia DBCC CHECKALLOC ezektől az utasításoktól. DBCC CHECKALLOC nem ellenőrzi a FILESTREAM-adatokat. A FILESTREAM bináris nagy objektumokat (BLOBS) tárol a fájlrendszerben.

Belső adatbázis-pillanatkép

DBCC CHECKALLOC egy belső adatbázis-pillanatkép használatával biztosítja az ellenőrzések végrehajtásához szükséges tranzakciós konzisztenciát. Ha nem hozható létre pillanatkép, vagy TABLOCK van megadva, DBCC CHECKALLOC megpróbál kizárólagos (X) zárolást szerezni az adatbázishoz a szükséges konzisztencia eléréséhez.

Jegyzet

A DBCC CHECKALLOCtempdb futtatása nem végez ellenőrzéseket. 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. Állítsa le és indítsa el az adatbázismotort a tempdb foglalási problémáinak megoldásához. Ez a művelet elveti és újra létrehozza a tempdb adatbázist.

A DBCC-hibaüzenetek ismertetése

A DBCC CHECKALLOC 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 CHECKALLOC 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 CHECKALLOC 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 DBCC CHECKALLOC bármilyen hibát jelez, javasoljuk, hogy a javítás futtatása helyett állítsa vissza az adatbázist az adatbázis biztonsági mentéséből. Ha nem létezik biztonsági másolat, a javítás futtatása kijavíthatja a jelentett hibákat; A hibák kijavításához azonban bizonyos oldalakat, így az adatokat is törölni kell.

A javítás elvégezhető egy felhasználói tranzakcióban. Ez lehetővé teszi a módosítások visszaállítását. Ha a módosítások visszakerülnek, az adatbázis továbbra is hibákat fog tartalmazni, és biztonsági másolatból kell visszaállítani. A javítás befejezése után biztonsági másolatot készít az adatbázisról.

Eredményhalmazok

Az alábbi táblázatok a DBCC CHECKALLOC által visszaadott információkat ismertetik.

Cikk Leírás
FirstIAM Csak belső használatra.
gyökér Csak belső használatra.
lapokat Adatoldalak száma.
használt lapok Lefoglalt lapok.
dedikált mértékek Az objektumhoz lefoglalt mértékek.

Vegyes foglalási lapok használata esetén előfordulhat, hogy a lapok mértékek nélkül vannak lefoglalva.

DBCC CHECKALLOC az egyes fájlokban lévő indexek és partíciók foglalási összegzését is jelenti. Ez az összefoglalás az adatok eloszlását ismerteti.

Cikk Leírás
Fenntartott lapok Az indexhez lefoglalt lapok és a fel nem használt lapok lefoglalt mértékben.
Használt lapok Az index által lefoglalt és használt lapok.
Partícióazonosító Csak belső használatra.
Kiosztási egység azonosítója Csak belső használatra.
Soron belüli adatok A lapok index- vagy halomadatokat tartalmaznak.
LOB-adatok A lapok varchar(max), nvarchar(max), varbinary(max), szöveges, ntext, xmlés kép adatokat tartalmaznak.
Soráttördelési adatok A lapok változó hosszúságú oszlopadatokat tartalmaznak, amelyeket a rendszer leküld a sorból.

DBCC CHECKALLOC a következő eredményhalmazt adja vissza (az értékek eltérőek lehetnek), kivéve, ha ESTIMATEONLY vagy NO_INFOMSGS van megadva.

DBCC results for 'master'.
***************************************************************
Table sysobjects                Object ID 1.
Index ID 1         FirstIAM (1:11)   Root (1:12)    Dpages 22.
    Index ID 1. 24 pages used in 5 dedicated extents.
Index ID 2         FirstIAM (1:1368)   Root (1:1362)    Dpages 10.
    Index ID 2. 12 pages used in 2 dedicated extents.
Index ID 3         FirstIAM (1:1392)   Root (1:1408)    Dpages 4.
    Index ID 3. 6 pages used in 0 dedicated extents.
Total number of extents is 7.
***************************************************************
'...'
***************************************************************
Table spt_server_info                Object ID 1938105945.
Index ID 1         FirstIAM (1:520)   Root (1:508)    Dpages 1.
    Index ID 1. 3 pages used in 0 dedicated extents.
Total number of extents is 0.
***************************************************************
Processed 52 entries in sysindexes for database ID 1.
File 1. Number of extents = 210, used pages = 1126, reserved pages = 1280.
           File 1 (number of mixed extents = 73, mixed pages = 184).
    Object ID 1, Index ID 0, data extents 5, pages 24, mixed extent pages 9.
'...'
    Object ID 1938105945, Index ID 0, data extents 0, pages 3, mixed extent pages 3.
Total number of extents = 210, used pages = 1126, reserved pages = 1280 in this database.
       (number of mixed extents = 73, mixed pages = 184) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC results for 'master'.
***************************************************************
Table sys.sysrowsetcolumns                Object ID 4.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). FirstIAM (1:98). Root (1:94). Dpages 7.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). 9 pages used in 1 dedicated extents.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). 0 pages used in 0 dedicated extents.
Total number of extents is 1.
...
***************************************************************
Processed 201 entries in system catalog for database ID 1.
File 1. Number of extents = 44, used pages = 300, reserved pages = 345.
           File 1 (number of mixed extents = 29, mixed pages = 225).
    Object ID 4, index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
    Object ID 5, index ID 1, partition ID 327680, alloc unit ID 327680 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 7, index ID 1, partition ID 458752, alloc unit ID 458752 (type In-row data), data extents 0, pages 5, mixed extent pages 5.
    Object ID 8, index ID 0, partition ID 524288, alloc unit ID 524288 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 13, index ID 1, partition ID 851968, alloc unit ID 851968 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
    Object ID 15, index ID 1, partition ID 983040, alloc unit ID 983040 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 26, index ID 1, partition ID 281474978414592, alloc unit ID 1703937 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
    Object ID 27, index ID 1, partition ID 281474978480128, alloc unit ID 1769473 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
    Object ID 27, index ID 2, partition ID 562949955190784, alloc unit ID 1769474 (type In-row data), index extents 0, pages 3, mixed extent pages 3.
...
    Object ID 1179151246, index ID 1, partition ID 72057594038845440, alloc unit ID 13435136 (type In-row data), data extents 2, pages 18, mixed extent pages 8.
    Object ID 1179151246, index ID 2, partition ID 72057594038910976, alloc unit ID 13566208 (type In-row data), index extents 1, pages 16, mixed extent pages 8.
    Object ID 1911677858, index ID 0, partition ID 72057594039631872, alloc unit ID 15073536 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
Total number of extents = 41, used pages = 289, reserved pages = 323 in this database.
       (number of mixed extents = 27, mixed pages = 211) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Ha ESTIMATEONLY van megadva, DBCC CHECKALLOC a következő eredményhalmazt adja vissza.

Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
34
  
(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

Az alábbi példa DBCC CHECKALLOC hajt végre az aktuális adatbázishoz és a AdventureWorks2025 adatbázishoz.

-- Check the current database.
DBCC CHECKALLOC;
GO
-- Check the AdventureWorks2022 database.
DBCC CHECKALLOC (AdventureWorks2022);
GO

Lásd még: