DBCC CHECKALLOC (Transact-SQL)
gäller för:SQL Server
Azure SQL Database
Azure 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öraDBCC 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