DBCC (Transact-SQL)
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
De Transact-SQL programmeertaal biedt DBCC-instructies die fungeren als Database Console-opdrachten voor SQL Server.
Opdrachtinstructies voor de databaseconsole worden gegroepeerd in de volgende categorieën.
Opdrachtcategorie | Uitvoeren |
---|---|
Onderhoud | Onderhoudstaken voor een database, index of bestandsgroep. |
Allerlei | Diverse taken, zoals het inschakelen van traceringsvlagmen of het verwijderen van een DLL uit het geheugen. |
Informatieve | Taken die verschillende soorten informatie verzamelen en weergeven. |
Validering | Validatiebewerkingen op een database, tabel, index, catalogus, bestandsgroep of toewijzing van databasepagina's. |
DBCC-opdrachten nemen invoerparameters en retourneren waarden. Alle DBCC-opdrachtparameters kunnen zowel unicode- als DBCS-letterlijke waarden accepteren.
Gebruik van momentopnamen van dbCC-databases
De volgende DBCC-opdrachten worden uitgevoerd op een interne momentopname van de database met het kenmerk Alleen-lezen die door de database-engine wordt gemaakt. De momentopname voorkomt blokkerings- en gelijktijdigheidsproblemen wanneer deze opdrachten worden uitgevoerd. Zie Database Snapshots (SQL Server)voor meer informatie.
DBCC CHECKALLOC
DBCC CHECKCATALOG
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
Wanneer u een van deze DBCC-opdrachten uitvoert, maakt de database-engine een momentopname van de database en krijgt deze een transactioneel consistente status. De DBCC-opdracht voert vervolgens de controles uit op deze momentopname. Nadat de DBCC-opdracht is voltooid, wordt deze momentopname verwijderd.
Soms is een momentopname van een interne database niet vereist of kan deze niet worden gemaakt. Wanneer dit gebeurt, wordt de DBCC-opdracht uitgevoerd op de werkelijke database. Als de database online is, gebruikt de DBCC-opdracht tabelvergrendeling om ervoor te zorgen dat de consistentie van de objecten die worden gecontroleerd. Dit gedrag is hetzelfde als als als de WITH TABLOCK
optie is opgegeven.
Er wordt geen momentopname van een interne database gemaakt wanneer een DBCC-opdracht wordt uitgevoerd:
- Op basis van de
master
-database en het exemplaar van SQL Server wordt uitgevoerd in de modus voor één gebruiker. - Voor een andere database dan
master
, maar de database is in de modus voor één gebruiker geplaatst met behulp van deALTER DATABASE
-instructie. - Op basis van een alleen-lezen database.
- Op basis van een database die is ingesteld in de noodmodus met behulp van de instructie
ALTER DATABASE
. - Tegen
tempdb
. In dit geval kan er geen momentopname van een database worden gemaakt vanwege interne beperkingen. - Gebruik de optie
WITH TABLOCK
. In dit geval wordt de aanvraag door DBCC uitgevoerd door geen momentopname van de database te maken.
De DBCC-opdrachten maken gebruik van tabelvergrendelingen in plaats van de momentopnamen van de interne database wanneer de opdracht wordt uitgevoerd op de volgende manieren:
- Een alleen-lezen bestandsgroep
- Een FAT-bestandssysteem
- Een volume dat geen ondersteuning biedt voor benoemde streams
- Een volume dat geen ondersteuning biedt voor alternatieve streams
Notitie
Als u DBCC CHECKALLOC
of het equivalente deel van DBCC CHECKDB
wilt uitvoeren met behulp van de optie WITH TABLOCK
, is een exclusieve databasevergrendeling (X
) vereist. Deze databasevergrendeling kan niet worden ingesteld op tempdb
of master
en mislukt waarschijnlijk voor alle andere databases.
Notitie
DBCC CHECKDB
mislukt wanneer deze wordt uitgevoerd op master
als er geen momentopname van een interne database kan worden gemaakt.
Voortgangsrapportage voor DBCC-opdrachten
De sys.dm_exec_requests
catalogusweergave bevat informatie over de voortgang en de huidige fase van de uitvoering van de DBCC CHECKDB
, CHECKFILEGROUP
en CHECKTABLE
opdrachten. De kolom percent_complete
geeft het percentage voltooid van de opdracht aan en de kolom command
rapporteert de huidige fase van de uitvoering van de opdracht.
De definitie van een voortgangseenheid is afhankelijk van de huidige fase van de uitvoering van de DBCC-opdracht. Soms wordt de voortgang gerapporteerd bij de granulariteit van een databasepagina, in andere fasen wordt deze gerapporteerd bij de granulariteit van één database of toewijzingsherstel. De volgende tabel beschrijft elke fase van de uitvoering en de granulariteit waarmee de opdracht voortgang rapporteert.
Uitvoeringsfase | Beschrijving | Granulariteit van voortgangsrapportage |
---|---|---|
DBCC TABLE CHECK |
De logische en fysieke consistentie van de objecten in de database wordt tijdens deze fase gecontroleerd. | Voortgang gerapporteerd op het paginaniveau van de database. De waarde voor voortgangsrapportage wordt bijgewerkt voor elke 1000 databasepagina's die worden gecontroleerd. |
DBCC TABLE REPAIR |
Databaseherstel wordt uitgevoerd tijdens deze fase als REPAIR_FAST , REPAIR_REBUILD of REPAIR_ALLOW_DATA_LOSS is opgegeven en er objectfouten moeten worden hersteld. |
Voortgang gerapporteerd op het niveau van afzonderlijke reparaties. De teller wordt bijgewerkt voor elke reparatie die is voltooid. |
DBCC ALLOC CHECK |
Toewijzingsstructuren in de database worden tijdens deze fase gecontroleerd. Opmerking: DBCC CHECKALLOC voert dezelfde controles uit. |
Voortgang wordt niet gerapporteerd |
DBCC ALLOC REPAIR |
Databaseherstel wordt uitgevoerd tijdens deze fase als REPAIR_FAST , REPAIR_REBUILD of REPAIR_ALLOW_DATA_LOSS is opgegeven en er toewijzingsfouten zijn die moeten worden hersteld. |
Voortgang wordt niet gerapporteerd. |
DBCC SYS CHECK |
Databasesysteemtabellen worden tijdens deze fase gecontroleerd. | Voortgang gerapporteerd op het paginaniveau van de database. De waarde voor voortgangsrapportage wordt bijgewerkt voor elke 1000 databasepagina's die worden gecontroleerd. |
DBCC SYS REPAIR |
Databaseherstel wordt uitgevoerd tijdens deze fase als REPAIR_FAST , REPAIR_REBUILD of REPAIR_ALLOW_DATA_LOSS is opgegeven en er systeemtabelfouten moeten worden hersteld. |
Voortgang gerapporteerd op het niveau van afzonderlijke reparaties. De teller wordt bijgewerkt voor elke reparatie die is voltooid. |
DBCC SSB CHECK |
SQL Server Service Broker-objecten worden tijdens deze fase gecontroleerd. Opmerking: deze fase wordt niet uitgevoerd wanneer DBCC CHECKTABLE wordt uitgevoerd. |
Voortgang wordt niet gerapporteerd. |
DBCC CHECKCATALOG |
De consistentie van databasecatalogussen wordt tijdens deze fase gecontroleerd. Opmerking: deze fase wordt niet uitgevoerd wanneer DBCC CHECKTABLE wordt uitgevoerd. |
Voortgang wordt niet gerapporteerd. |
DBCC IVIEW CHECK |
De logische consistentie van geïndexeerde weergaven die aanwezig zijn in de database, wordt tijdens deze fase gecontroleerd. | Voortgang gerapporteerd op het niveau van de afzonderlijke databaseweergave die wordt gecontroleerd. |
Informatieve instructies
- DBCC INPUTBUFFER-
- DBCC SHOWCONTIG-
- DBCC OPENTRAN-
- DBCC OUTPUTBUFFER-
- DBCC PROCCACHE-
- DBCC-SHOW_STATISTICS
- DBCC SQLPERF-
- DBCC TRACESTATUS
- DBCC USEROPTIONS-
Validatie-instructies
- DBCC CHECKALLOC-
- DBCC CHECKCATALOG-
- DBCC CHECKCONSTRAINTS-
- DBCC CHECKDB-
- DBCC CHECKFILEGROUP-
- DBCC CHECKIDENT-
- DBCC CHECKTABLE
Onderhoudsinstructies
- DBCC CLEANTABLE-
- DBCC DBREINDEX-
- DBCC DROPCLEANBUFFERS-
- DBCC FREEPROCCACHE-
- DBCC INDEXDEFRAG-
- DBCC SHRINKDATABASE-
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE-
Diverse instructies
- DBCC dllname (FREE)
- DBCC HELP-
- DBCC FLUSHAUTHCACHE-
- DBCC TRACEOFF-
- DBCC FREESESSIONCACHE
- DBCC TRACEON-
- DBCC FREESYSTEMCACHE-
- DBCC CLONEDATABASE (Van toepassing op: SQL Server 2014 (12.x) Service Pack 2 en latere versies.)