Lezen in het Engels

Delen via


DBCC CHECKALLOC (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Controleert de consistentie van de toewijzingsstructuren voor schijfruimte voor een opgegeven database.

Transact-SQL syntaxisconventies

Syntaxis

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

Argumenten

database_name | database_id | 0

De naam of de id van de database waarvoor toewijzing en paginagebruik moeten worden gecontroleerd.

Als dit niet is opgegeven of als 0 is opgegeven, wordt de huidige database gebruikt.

Databasenamen moeten voldoen aan de regels voor id's.

NOINDEX

Hiermee geeft u op dat niet-geclusterde indexen voor gebruikerstabellen niet moeten worden gecontroleerd.

NOINDEX wordt alleen gehandhaafd voor achterwaartse compatibiliteit en heeft geen invloed op DBCC CHECKALLOC.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD

Hiermee geeft u op dat DBCC CHECKALLOC de gevonden fouten herstellen. database_name moet zich in de modus voor één gebruiker bevinden.

  • REPAIR_ALLOW_DATA_LOSS

    Probeert eventuele gevonden fouten te herstellen. Deze reparaties kunnen leiden tot gegevensverlies. REPAIR_ALLOW_DATA_LOSS is de enige optie waarmee toewijzingsfouten kunnen worden hersteld.

  • REPAIR_FAST

    De syntaxis wordt alleen behouden voor compatibiliteit met eerdere versies. Er worden geen herstelacties uitgevoerd.

  • REPAIR_REBUILD

    Niet van toepassing.

Belangrijk

Gebruik de REPARATIE-opties alleen als laatste redmiddel. Als u fouten wilt herstellen, raden we u aan om te herstellen vanuit een back-up. Herstelbewerkingen houden niet rekening met een van de beperkingen die kunnen bestaan in of tussen tabellen. Als de opgegeven tabel betrokken is bij een of meer beperkingen, raden we u aan DBCC CHECKCONSTRAINTS uit te voeren na een herstelbewerking. Als u REPAIR moet gebruiken, voert u DBCC CHECKDB uit zonder een reparatieoptie om het herstelniveau te vinden dat moet worden gebruikt. Als u het REPAIR_ALLOW_DATA_LOSS niveau gebruikt, wordt u aangeraden een back-up van de database te maken voordat u DBCC CHECKDB uitvoert met deze optie.

MET

Hiermee kunt u opties opgeven.

  • ALL_ERRORMSGS

    Geeft alle foutberichten weer. Alle foutberichten worden standaard weergegeven. Het opgeven of weglaten van deze optie heeft geen effect.

  • NO_INFOMSGS

    Onderdrukt alle informatieve berichten en het rapport van de gebruikte ruimte.

  • TABLOCK

    Zorgt ervoor dat de DBCC-opdracht een exclusieve databasevergrendeling krijgt.

  • SCHATTING

    Geeft de geschatte hoeveelheid tempdb ruimte weer die nodig is om DBCC CHECKALLOC uit te voeren wanneer alle andere opties zijn opgegeven.

Opmerkingen

DBCC CHECKALLOC controleert de toewijzing van alle pagina's in de database, ongeacht het type pagina of het type object waartoe ze behoren. Ook worden de verschillende interne structuren gevalideerd die worden gebruikt om deze pagina's en de relaties tussen deze pagina's bij te houden.

Als NO_INFOMSGS niet is opgegeven, verzamelt DBCC CHECKALLOC informatie over het ruimtegebruik voor alle objecten in de database. Deze informatie wordt samen met eventuele gevonden fouten afgedrukt.

Notitie

De DBCC CHECKALLOC-functionaliteit is opgenomen in DBCC CHECKDB- en DBCC CHECKFILEGROUP. Dit betekent dat u DBCC CHECKALLOC niet afzonderlijk van deze instructies hoeft uit te voeren. DBCC CHECKALLOC controleert geen FILESTREAM-gegevens. FILESTREAM slaat binaire grote objecten (BLOBS) op in het bestandssysteem.

Momentopname van interne database

DBCC CHECKALLOC maakt gebruik van een momentopname van een interne database om de transactionele consistentie te bieden die nodig is om deze controles uit te voeren. Als er geen momentopname kan worden gemaakt of TABLOCK is opgegeven, probeert DBCC CHECKALLOC een exclusieve (X) vergrendeling op de database te verkrijgen om de vereiste consistentie te verkrijgen.

Notitie

Het uitvoeren van DBCC CHECKALLOC op tempdb voert geen controles uit. Dit komt omdat databasemomentopnamen om prestatieredenen niet beschikbaar zijn op tempdb. Dit betekent dat de vereiste transactionele consistentie niet kan worden verkregen. Stop en start de database-engine om eventuele tempdb toewijzingsproblemen op te lossen. Met deze actie wordt de tempdb-database verwijderd en opnieuw gemaakt.

DBCC-foutberichten begrijpen

Nadat de opdracht DBCC CHECKALLOC 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 CHECKALLOC 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 CHECKALLOC 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 Windows BUILTIN\Administrators groep en de lokale beheerdersgroep. De DBCC-opdracht mislukt niet als het proces voor het verzamelen van gegevens mislukt.

Fouten oplossen

Als DBCC CHECKALLOC fouten rapporteert, raden we u aan om de database te herstellen vanuit de databaseback-up in plaats van een herstelbewerking uit te voeren. Als er geen back-up bestaat, kan het uitvoeren van een herstel de gemelde fouten corrigeren; Het corrigeren van de fouten kan echter vereisen dat sommige pagina's en daarom gegevens worden verwijderd.

Een reparatie kan worden uitgevoerd in een gebruikerstransactie. Hierdoor kunnen wijzigingen worden teruggedraaid. Als wijzigingen worden teruggedraaid, bevat de database nog steeds fouten en moet deze worden hersteld vanuit een back-up. Nadat de reparaties zijn voltooid, maakt u een back-up van de database.

Resultatensets

In de volgende tabellen worden de gegevens beschreven die DBCC CHECKALLOC retourneert.

Item Beschrijving
FirstIAM- Alleen intern gebruik.
root- Alleen intern gebruik.
Dpages Aantal gegevenspagina's.
Pagina's die worden gebruikt Toegewezen pagina's.
Toegewezen gebieden Gebieden die aan het object zijn toegewezen.

Als gemengde toewijzingspagina's worden gebruikt, zijn er mogelijk pagina's toegewezen zonder gebieden.

DBCC CHECKALLOC rapporteert ook een toewijzingsoverzicht voor elke index en partitie in elk bestand. In deze samenvatting wordt de verdeling van de gegevens beschreven.

Item Beschrijving
Gereserveerde pagina's Pagina's die zijn toegewezen aan de index en de ongebruikte pagina's in toegewezen gebieden.
Gebruikte pagina's Pagina's die door de index worden toegewezen en gebruikt.
Partitie-id Alleen intern gebruik.
Id van alloc-eenheid Alleen intern gebruik.
Gegevens in rij Pagina's bevatten index- of heapgegevens.
LOB-gegevens Pagina's bevatten varchar(max), nvarchar(max), varbinary(max), tekst, ntext, xml-en afbeelding gegevens.
Rij-overloopgegevens Pagina's bevatten kolomgegevens met een variabele lengte die buiten de rij zijn gepusht.

DBCC CHECKALLOC retourneert de volgende resultatenset (waarden kunnen variëren), behalve wanneer ESTIMATEONLY of NO_INFOMSGS is opgegeven.

Output
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.

Wanneer ESTIMATEONLY is opgegeven, retourneert DBCC CHECKALLOC de volgende resultatenset.

Output
Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
34
  
(1 row(s) affected)
  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Machtigingen

Vereist lidmaatschap van de vaste serverfunctie sysadmin of de db_owner vaste databaserol.

Voorbeelden

In het volgende voorbeeld wordt DBCC CHECKALLOC uitgevoerd voor de huidige database en voor de AdventureWorks2022-database.

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

Zie ook

  • DBCC (Transact-SQL)