Delen via


DBCC (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure 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 de ALTER 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 CHECKALLOCof het equivalente deel van DBCC CHECKDBwilt 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, CHECKFILEGROUPen 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_REBUILDof 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_REBUILDof 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_REBUILDof 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

Validatie-instructies

Onderhoudsinstructies

Diverse instructies