Dela via


DBCC CHECKALLOC (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Kontrollerar konsekvensen för diskutrymmesallokeringsstrukturer för en angiven databas.

Transact-SQL syntaxkonventioner

Syntax

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

Argument

database_name | database_id | 0

Namnet eller ID:t för databasen för vilken allokering och sidanvändning ska kontrolleras.

Om det inte anges, eller om 0 anges, används den aktuella databasen.

Databasnamn måste följa reglerna för identifierare.

NOINDEX

Anger att icke-grupperade index för användartabeller inte ska kontrolleras.

NOINDEX underhålls endast för bakåtkompatibilitet och påverkar inte DBCC CHECKALLOC.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD

Anger att DBCC CHECKALLOC reparera de fel som hittades. database_name måste vara i enanvändarläge.

  • REPAIR_ALLOW_DATA_LOSS

    Försöker reparera eventuella fel som hittas. Dessa reparationer kan orsaka viss dataförlust. REPAIR_ALLOW_DATA_LOSS är det enda alternativet som gör att allokeringsfel kan repareras.

  • REPAIR_FAST

    Syntaxen bibehålls endast för bakåtkompatibilitet. Inga reparationsåtgärder utförs.

  • REPAIR_REBUILD

    Inte tillämpligt.

Viktig

Använd endast REPARATIONsalternativen som en sista utväg. För att reparera fel rekommenderar vi att du återställer från en säkerhetskopia. Reparationsåtgärder tar inte hänsyn till några av de begränsningar som kan finnas i eller mellan tabeller. Om den angivna tabellen ingår i en eller flera begränsningar rekommenderar vi att du kör DBCC CHECKCONSTRAINTS efter en reparationsåtgärd. Om du måste använda REPAIR kör du DBCC CHECKDB utan reparationsalternativ för att hitta den reparationsnivå som ska användas. Om du använder REPAIR_ALLOW_DATA_LOSS-nivån rekommenderar vi att du säkerhetskopierar databasen innan du kör DBCC CHECKDB med det här alternativet.

MED

Aktiverar alternativ som ska anges.

  • ALL_ERRORMSGS

    Visar alla felmeddelanden. Alla felmeddelanden visas som standard. Att ange eller utelämna det här alternativet har ingen effekt.

  • NO_INFOMSGS

    Undertrycker alla informationsmeddelanden och rapporten över det utrymme som används.

  • TABLOCK

    Gör att DBCC-kommandot hämtar ett exklusivt databaslås.

  • ESTIMATEONLY

    Visar den uppskattade mängden tempdb utrymme som krävs för att köra DBCC CHECKALLOC när alla andra alternativ har angetts.

Anmärkningar

DBCC CHECKALLOC kontrollerar allokeringen av alla sidor i databasen, oavsett vilken typ av sida eller typ av objekt de tillhör. Den validerar också de olika interna strukturer som används för att hålla reda på dessa sidor och relationerna mellan dem.

Om NO_INFOMSGS inte har angetts samlar DBCC CHECKALLOC in information om utrymmesanvändning för alla objekt i databasen. Den här informationen skrivs ut tillsammans med eventuella fel som hittas.

Not

Funktionen DBCC CHECKALLOC ingår i DBCC CHECKDB och DBCC CHECKFILEGROUP. Det innebär att du inte behöver köra DBCC CHECKALLOC separat från dessa instruktioner. DBCC CHECKALLOC kontrollerar inte FILESTREAM-data. FILESTREAM lagrar binära stora objekt (BLOBS) i filsystemet.

Intern databasögonblicksbild

DBCC CHECKALLOC använder en intern databasögonblicksbild för att ge den transaktionskonsekvens som krävs för att utföra dessa kontroller. Om det inte går att skapa en ögonblicksbild eller om TABLOCK har angetts försöker DBCC CHECKALLOC hämta ett exklusivt (X) lås på databasen för att få den konsekvens som krävs.

Not

Att köra DBCC CHECKALLOC mot tempdb utför inga kontroller. 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. Stoppa och starta databasmotorn för att lösa eventuella tempdb allokeringsproblem. Den här åtgärden släpper och återskapar tempdb-databasen.

Förstå DBCC-felmeddelanden

När DBCC CHECKALLOC 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 CHECKALLOC 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 CHECKALLOC 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-rollen. Som standard innehåller sysadmin-rollen alla medlemmar i gruppen Windows BUILTIN\Administrators och den lokala administratörsgruppen. DBCC-kommandot misslyckas inte om datainsamlingsprocessen misslyckas.

Lösa fel

Om DBCC CHECKALLOC rapporterar några fel rekommenderar vi att du återställer databasen från databassäkerhetskopian i stället för att köra en reparation. Om det inte finns någon säkerhetskopia kan du korrigera de rapporterade felen genom att köra en reparation. Att korrigera felen kan dock kräva att vissa sidor, och därför data, tas bort.

En reparation kan utföras i en användartransaktion. Detta gör att ändringar kan återställas. Om ändringarna återställs innehåller databasen fortfarande fel och måste återställas från en säkerhetskopia. När reparationerna är klara säkerhetskopierar du databasen.

Resultatuppsättningar

I följande tabeller beskrivs den information som DBCC CHECKALLOC returnerar.

Sak Beskrivning
FirstIAM Endast intern användning.
Rot Endast intern användning.
Dpages Antal datasidor.
sidor som används Allokerade sidor.
Dedikerade omfattningar Omfattningar som allokerats till objektet.

Om blandade allokeringssidor används kan det finnas sidor som allokerats utan omfattning.

DBCC CHECKALLOC rapporterar också en allokeringssammanfattning för varje index och partition i varje fil. Den här sammanfattningen beskriver fördelningen av data.

Sak Beskrivning
Reserverade sidor Sidor som allokerats till indexet och oanvända sidor i allokerade omfattningar.
Använda sidor Sidor som allokeras och används av indexet.
Partitions-ID Endast intern användning.
Alloc-enhets-ID Endast intern användning.
Data på rad Sidorna innehåller index- eller heapdata.
LOB-data Sidorna innehåller varchar(max), nvarchar(max), varbinary(max), text, ntext, xmloch bild data.
Rad-overflow-data Sidorna innehåller kolumndata med variabel längd som har push-överförts från rad.

DBCC CHECKALLOC returnerar följande resultatuppsättning (värdena kan variera), förutom när ESTIMATEONLY eller NO_INFOMSGS anges.

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.

När ESTIMATEONLY anges returnerar DBCC CHECKALLOC följande resultatuppsättning.

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

Behörigheter

Kräver medlemskap i den fasta serverrollen sysadmin eller db_owner fast databasroll.

Exempel

I följande exempel körs DBCC CHECKALLOC för den aktuella databasen och för den AdventureWorks2022 databasen.

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

Se även