DBCC (Transact-SQL)DBCC (Transact-SQL)

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Le langage de programmation Transact-SQLTransact-SQL fournit des instructions DBCC qui jouent le rôle d'instructions de console de base de données pour SQL ServerSQL Server.The Transact-SQLTransact-SQL programming language provides DBCC statements that act as Database Console Commands for SQL ServerSQL Server.

Les instructions de la console de base de données sont regroupées selon les catégories suivantes :Database Console Command statements are grouped into the following categories.

Catégorie de commandeCommand category ActionPerform
MaintenanceMaintenance Les tâches de maintenance sur une base de données, un index ou un groupe de fichiers.Maintenance tasks on a database, index, or filegroup.
DiversMiscellaneous Les tâches diverses, telles que l'activation des indicateurs de trace ou la suppression d'une DLL de la mémoire.Miscellaneous tasks such as enabling trace flags or removing a DLL from memory.
InformationInformational Les tâches qui recueillent et affichent différents types d'informations.Tasks that gather and display various types of information.
ValidationValidation Valide une base de données, une table, un index, un catalogue, un groupe de fichiers ou l'allocation de pages de base de donnéesValidation operations on a database, table, index, catalog, filegroup, or allocation of database pages.

Les commandes DBCC prennent des paramètres d'entrée et renvoient des valeurs.DBCC commands take input parameters and return values. Tous les paramètres des commandes DBCC acceptent les littéraux de type Unicode et DBCS.All DBCC command parameters can accept both Unicode and DBCS literals.

Utilisation de l'instantané de base de données interne DBCCDBCC Internal Database Snapshot Usage

Les commandes DBCC suivantes fonctionnent sur un instantané de base de données en lecture seule interne créé par le Moteur de base de donnéesDatabase Engine.The following DBCC commands operate on an internal read-only database snapshot that the Moteur de base de donnéesDatabase Engine creates. Ceci évite les problèmes de blocage et d'accès simultané lors de l'exécution de ces commandes.This prevents blocking and concurrency problems when these commands are executed. Pour plus d’informations, consultez Instantanés de base de données (SQL Server).For more information, see Database Snapshots (SQL Server).

  • DBCC CHECKALLOCDBCC CHECKALLOC
  • DBCC CHECKCATALOGDBCC CHECKCATALOG
  • DBCC CHECKDBDBCC CHECKDB
  • DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
  • DBCC CHECKTABLEDBCC CHECKTABLE

Quand vous exécutez l’une de ces commandes DBCC, le Moteur de base de donnéesDatabase Engine crée un instantané de base de données dont l’état est cohérent d’un point de vue transactionnel.When you execute one of these DBCC commands, the Moteur de base de donnéesDatabase Engine creates a database snapshot and brings it to a transactionally consistent state. La commande DBCC exécute alors les vérifications sur cet instantané.The DBCC command then runs the checks against this snapshot. Lorsque la commande DBCC a terminé, cet instantané est supprimé.After the DBCC command is completed, this snapshot is dropped.

Parfois, l'instantané de base de données interne n'est pas nécessaire ou n'est pas possible.Sometimes an internal database snapshot is not required or cannot be created. Dans ce cas, la commande DBCC s'exécute sur la base de données réelle.When this occurs, the DBCC command executes against the actual database. Si la base de données est en ligne, la commande DBCC a recours au verrouillage des tables pour garantir la cohérence des objets qu'elle est en train de vérifier.If the database is online, the DBCC command uses table-locking to ensure the consistency of the objects that it is checking. Ce comportement serait identique si l'option WITH TABLOCK était spécifiée.This behavior is the same as if the WITH TABLOCK option were specified.

Aucun instantané de base de données interne n'est créé lors de l'exécution d'une commande DBCC :An internal database snapshot is not created when a DBCC command is executed:

  • Sur une base de données master, si l’instance de SQL ServerSQL Server s’exécute en mode mono-utilisateur.Against master, and the instance of SQL ServerSQL Server is running in single-user mode.
  • Sur une base de données autre que master, si cette base de données a été placée en mode mono-utilisateur à l’aide de l’instruction ALTER DATABASE.Against a database other than master, but the database has been put in single-user mode by using the ALTER DATABASE statement.
  • Sur une base de données en lecture seule.Against a read-only database.
  • Sur une base de données qui a été placée en mode urgence à l'aide de la commande ALTER DATABASE.Against a database that has been set in emergency mode by using the ALTER DATABASE statement.
  • Sur une base de données tempdb.Against tempdb. Dans ce cas, l'instantané de base de données ne peut pas être créé, en raison de restrictions internes.In this case, a database snapshot cannot be created because of internal restrictions.
  • Si l'option WITH TABLOCK est utilisée.Using the WITH TABLOCK option. Dans ce cas, DBCC satisfait la demande en ne créant pas d'instantané de la base de données.In this case, DBCC honors the request by not creating a database snapshot.

Les commandes DBCC utilisent des verrous de table au lieu d'instantanés internes de base de données lorsque la commande est exécutée sur les bases de données suivantes :The DBCC commands use table locks instead of the internal database snapshots when the command is executed against the following:

  • un groupe de fichier en lecture seule ;A read-only filegroup
  • un système de fichiers FAT ;An FAT file system
  • un volume qui ne prend pas en charge les « flux nommés » ;A volume that does not support 'named streams'
  • un volume qui ne prend pas en charge les « flux de remplacement ».A volume that does not support 'alternate streams'

Notes

Pour tenter d'exécuter DBCC CHECKALLOC, ou la partie équivalente de DBCC CHECKDB, à l'aide de l'option WITH TABLOCK, il faut utiliser un verrou X (exclusif) de base de données.Trying to run DBCC CHECKALLOC, or the equivalent part of DBCC CHECKDB, by using the WITH TABLOCK option requires a database X lock. Ce verrou de base de données ne peut pas être défini sur des bases de données tempdb ni master et risque d’échouer sur toutes les autres bases de données.This database lock cannot be set on tempdb or master and will probably fail on all other databases.

Notes

DBCC CHECKDB échoue quand il est exécuté sur une base de données master s’il n’est pas possible de créer d’instantané de base de données interne.DBCC CHECKDB fails when it is run against master if an internal database snapshot cannot be created.

Rapport de progression pour les commandes DBCCProgress Reporting for DBCC Commands

La vue de catalogue sys.dm_exec_requests contient des informations sur la progression et la phase d’exécution en cours des commandes DBCC CHECKDB, CHECKFILEGROUP et CHECKTABLE.The sys.dm_exec_requests catalog view contains information about the progress and the current phase of execution of the DBCC CHECKDB, CHECKFILEGROUP, and CHECKTABLE commands. La colonne percent_complete indique le pourcentage d’exécution de la commande, et la colonne command indique la phase d’exécution en cours de cette commande.The percent_complete column indicates the percentage complete of the command, and the command column reports the current phase of the execution of the command.

La définition d'une unité de progression dépend de la phase en cours d'exécution de la commande DBCC.The definition of a unit of progress depends on the current phase of execution of the DBCC command. La progression est parfois indiquée avec un niveau de granularité correspondant à une page de base de données, alors que pour d'autres phases elle est indiquée avec un niveau de granularité correspondant à une seule réparation de base de données ou d'allocation.Sometimes progress is reported at the granularity of a database page, in other phases it is reported at the granularity of a single database or allocation repair. Le tableau qui suit décrit chaque phase de l'exécution, et le niveau de granularité utilisé par la commande pour indiquer la progression.The following table describes each phase of execution, and the granularity at which the command reports progress.

Phase d'exécutionExecution phase DescriptionDescription Granularité du rapport de progressionProgress reporting granularity
DBCC TABLE CHECKDBCC TABLE CHECK Durant cette phase, la cohérence logique et physique des objets de la base de données est vérifiée.The logical and physical consistency of the objects in the database is checked during this phase. La progression est indiquée au niveau de la page de base de données.Progress reported at the database page level.

La valeur de rapport de progression est actualisée toutes les 1 000 pages de base de données vérifiées.The progress reporting value is updated for each 1000 database pages that are checked.
DBCC TABLE REPAIRDBCC TABLE REPAIR Durant cette phase, les réparations de base de données sont exécutées si REPAIR_FAST, REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS est spécifié, et s'il existe des erreurs à réparer sur les objets.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are object errors that must be repaired. La progression est indiquée au niveau de la réparation.Progress reported at the individual repair level.

Le compteur est mis à jour pour chaque réparation terminée.The counter is updated for each repair that is completed.
DBCC ALLOC CHECKDBCC ALLOC CHECK Durant cette phase, les structures d'allocation de la base de données sont vérifiées.Allocation structures in the database are checked during this phase.

Remarque : DBCC CHECKALLOC exécute les mêmes vérifications.Note: DBCC CHECKALLOC performs the same checks.
La progression n’est pas indiquéeProgress is not reported
DBCC ALLOC REPAIRDBCC ALLOC REPAIR Durant cette phase, les réparations de base de données sont exécutées si REPAIR_FAST, REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS est spécifié, et s'il existe des erreurs d'allocation à réparer.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are allocation errors that must be repaired. La progression n'est pas indiquée.Progress is not reported.
DBCC SYS CHECKDBCC SYS CHECK Durant cette phase, les tables système de la base de données sont vérifiées.Database system tables are checked during this phase. La progression est indiquée au niveau de la page de base de données.Progress reported at the database page level.

La valeur de progression est actualisée toutes les 1 000 pages de base de données vérifiées.The progress reporting value is updated for every 1000 database pages that are checked.
DBCC SYS REPAIRDBCC SYS REPAIR Durant cette phase, les réparations de base de données sont exécutées si REPAIR_FAST, REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS est spécifié, et s'il existe des erreurs de tables système à réparer.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are system table errors that must be repaired. La progression est indiquée au niveau de la réparation.Progress reported at the individual repair level.

Le compteur est mis à jour pour chaque réparation terminée.The counter is updated for each repair that is completed.
DBCC SSB CHECKDBCC SSB CHECK Durant cette phase, les objets SQL ServerSQL Server Service Broker sont vérifiés.SQL ServerSQL Server Service Broker objects are checked during this phase.

Remarque : Cette phase n’est pas réalisée lors de l’exécution de DBCC CHECKTABLE.Note: This phase is not executed when DBCC CHECKTABLE is executed.
La progression n'est pas indiquée.Progress is not reported.
DBCC CHECKCATALOGDBCC CHECKCATALOG Durant cette phase, la cohérence des catalogues de la base de données est vérifiée.The consistency of database catalogs are checked during this phase.

Remarque : Cette phase n’est pas réalisée lors de l’exécution de DBCC CHECKTABLE.Note: This phase is not executed when DBCC CHECKTABLE is executed.
La progression n'est pas indiquée.Progress is not reported.
DBCC IVIEW CHECKDBCC IVIEW CHECK Durant cette phase, la cohérence logique des vues indexées présentes dans la base de données est vérifiée.The logical consistency of any indexed views present in the database is checked during this phase. La progression est indiquée au niveau de chaque vue de base de données vérifiée.Progress reported at the level of the individual database view that is being checked.

Instructions d’informationInformational Statements

DBCC INPUTBUFFERDBCC INPUTBUFFER DBCC SHOWCONTIGDBCC SHOWCONTIG
DBCC OPENTRANDBCC OPENTRAN DBCC SQLPERFDBCC SQLPERF
DBCC OUTPUTBUFFERDBCC OUTPUTBUFFER DBCC TRACESTATUSDBCC TRACESTATUS
DBCC PROCCACHEDBCC PROCCACHE DBCC USEROPTIONSDBCC USEROPTIONS
DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS

Instructions de validationValidation Statements

DBCC CHECKALLOCDBCC CHECKALLOC DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
DBCC CHECKCATALOGDBCC CHECKCATALOG DBCC CHECKIDENTDBCC CHECKIDENT
DBCC CHECKCONSTRAINTSDBCC CHECKCONSTRAINTS DBCC CHECKTABLEDBCC CHECKTABLE
DBCC CHECKDBDBCC CHECKDB

Instructions de maintenanceMaintenance Statements

DBCC CLEANTABLEDBCC CLEANTABLE DBCC INDEXDEFRAGDBCC INDEXDEFRAG
DBCC DBREINDEXDBCC DBREINDEX DBCC SHRINKDATABASEDBCC SHRINKDATABASE
DBCC DROPCLEANBUFFERSDBCC DROPCLEANBUFFERS DBCC SHRINKFILEDBCC SHRINKFILE
DBCC FREEPROCCACHEDBCC FREEPROCCACHE DBCC UPDATEUSAGEDBCC UPDATEUSAGE

Instructions diversesMiscellaneous Statements

DBCC dllname (FREE)DBCC dllname (FREE) DBCC HELPDBCC HELP
DBCC FLUSHAUTHCACHEDBCC FLUSHAUTHCACHE DBCC TRACEOFFDBCC TRACEOFF
DBCC FREESESSIONCACHEDBCC FREESESSIONCACHE DBCC TRACEONDBCC TRACEON
DBCC FREESYSTEMCACHEDBCC FREESYSTEMCACHE DBCC CLONEDATABASEDBCC CLONEDATABASE

S’applique à : SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 à SQL Server 2017SQL Server 2017.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 through SQL Server 2017SQL Server 2017.