Partager via


DBCC (Transact-SQL)

Le langage de programmation Transact-SQL fournit des instructions DBCC qui jouent le rôle d'instructions de console de base de données pour SQL Server 2005.

Les instructions de la console de base de données sont regroupées selon les catégories suivantes :

Catégorie de commande Action

Maintenance

Les tâches de maintenance sur une base de données, un index ou un groupe de fichiers.

Divers

Les tâches diverses, telles que l'activation des indicateurs de trace ou la suppression d'une DLL de la mémoire.

Information

Les tâches qui recueillent et affichent différents types d'informations.

Validation

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ées

Les commandes DBCC prennent des paramètres d'entrée et renvoient des valeurs. Tous les paramètres des commandes DBCC acceptent les littéraux de type Unicode et DBCS.

Utilisation des ensembles de résultats DBCC

La plupart des commandes DBCC permettent d'afficher les résultats sous forme tabulaire à l'aide de l'option WITH TABLERESULTS. Ces informations peuvent être chargées dans une table pour une utilisation complémentaire. Voici un exemple de script :

-- Create the table to accept the results.
CREATE TABLE #tracestatus (
   TraceFlag int,
   Status int
   )

-- Execute the command, putting the results in the table.
INSERT INTO #tracestatus 
   EXEC ('DBCC TRACESTATUS (-1) WITH NO_INFOMSGS')

-- Display the results.
SELECT * 
FROM #tracestatus
GO

Utilisation de la capture instantanée de base de données interne de DBCC

Les commandes DBCC qui suivent fonctionnent sur une capture instantanée interne de base de données en lecture seule que crée le moteur de base de données SQL Server. Ceci évite les problèmes de blocage et d'accès simultané lors de l'exécution de ces commandes. Pour plus d'informations, consultez Captures instantanées de base de données.

DBCC CHECKALLOC

DBCC CHECKDB

DBCC CHECKCATALOG

DBCC CHECKFILEGROUP

DBCC CHECKTABLE

 

Lorsque vous exécutez une de ces commandes DBCC, le moteur de base de données crée une capture instantanée de base de données, dont l'état est cohérent d'un point de vue transactionnel. La commande DBCC exécute alors les vérifications sur cette capture instantanée. Lorsque la commande DBCC a terminé, cette capture instantanée est supprimée.

Parfois, la capture instantanée de base de données interne n'est pas nécessaire ou n'est pas possible. Dans ce cas, la commande DBCC s'exécute sur la base de données réelle. 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. Ce comportement serait identique si l'option WITH TABLOCK était spécifiée.

Aucune capture instantanée de base de données interne n'est créée lors de l'exécution d'une commande DBCC :

  • Sur une base de données master, si l'instance de SQL Server s'exécute en mode mono-utilisateur.
  • 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 la commande ALTER DATABASE.
  • Sur une base de données en lecture seule.
  • Sur une base de données qui a été placée en mode urgence à l'aide de la commande ALTER DATABASE.
  • Sur une base de données tempdb. Dans ce cas, la capture instantanée de base de données ne peut pas être créée, en raison de restrictions internes.
  • Si l'option WITH TABLOCK est utilisée. Dans ce cas, DBCC satisfait la demande en ne créant pas de capture instantanée de la base de données.

Les commandes DBCC utilisent des verrous de table au lieu de captures instantanées internes de base de données lorsque la commande est exécutée sur les bases de données suivantes :

  • un groupe de fichier en lecture seule ;
  • un système de fichiers FAT ;
  • un volume qui ne prend pas en charge les « flux nommés » ;
  • un volume qui ne prend pas en charge les « flux de remplacement ».
ms188796.note(fr-fr,SQL.90).gifRemarque :
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. Ce verrou de base de données ne peut pas être utilisé sur des bases tempdb ou master et risque d'échouer sur toutes les autres bases de données.
ms188796.note(fr-fr,SQL.90).gifRemarque :
DBCC CHECKDB échoue lorsqu'il est exécuté sur une base de données master s'il n'est pas possible de créer de capture instantanée interne de la base de données.

Rapport de progression pour les commandes DBCC

Dans SQL Server 2005, la vue de catalogue sys.dm_exec_requests contient des informations sur la progression et la phase en cours d'exécution des commandes DBCC CHECKDB, CHECKFILEGROUPet CHECKTABLE. La colonne percent_complete indique le pourcentage d'exécution de la commande, et la colonne command indique la phase de cette commande en cours d'exécution.

La définition d'une unité de progression dépend de la phase en cours d'exécution de la commande DBCC. 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. 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.

Phase d'exécution

Description

Granularité du rapport de progression

DBCC TABLE CHECK

Durant cette phase, la cohérence logique et physique des objets de la base de données est vérifiée.

La progression est indiquée au niveau de la page de base de données.

La valeur de progression est actualisée toutes les 1 000 pages de base de données vérifiées.

DBCC 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.

La progression est indiquée au niveau de la réparation.

Le compteur est incrémenté pour chaque réparation terminée.

DBCC ALLOC CHECK

Durant cette phase, les structures d'allocation de la base de données sont vérifiées.

ms188796.note(fr-fr,SQL.90).gifRemarque :

DBCC CHECKALLOC exécute les mêmes vérifications.

La progression n'est pas indiquée .

DBCC 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.

La progression n'est pas indiquée.

DBCC SYS CHECK

Durant cette phase, les tables système de la base de données sont vérifiées.

La progression est indiquée au niveau de la page de base de données.

La valeur de progression est actualisée toutes les 1 000 pages de base de données vérifiées.

DBCC 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.

La progression est indiquée au niveau de la réparation.

Le compteur est mis à jour pour chaque réparation terminée.

DBCC SSB CHECK

Durant cette phase, les objets SQL Server Service Broker sont vérifiés.

ms188796.note(fr-fr,SQL.90).gifRemarque :

Cette phase n'est pas réalisée lors de l'exécution de DBCC CHECKTABLE.

La progression n'est pas indiquée.

DBCC CHECKCATALOG

Durant cette phase, la cohérence des catalogues de la base de données est vérifiée.

ms188796.note(fr-fr,SQL.90).gifRemarque :

Cette phase n'est pas réalisée lors de l'exécution de DBCC CHECKTABLE.

La progression n'est pas indiquée.

DBCC 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.

La progression est indiquée au niveau de chaque vue de base de données vérifiée.

Instructions d'information

DBCC CONCURRENCYVIOLATION

DBCC SHOW_STATISTICS

DBCC INPUTBUFFER

DBCC SHOWCONTIG

DBCC OPENTRAN

DBCC SQLPERF

DBCC OUTPUTBUFFER

DBCC TRACESTATUS

DBCC PROCCACHE

DBCC USEROPTIONS

Instructions de validation

DBCC CHECKALLOC

DBCC CHECKFILEGROUP

DBCC CHECKCATALOG

DBCC CHECKIDENT

DBCC CHECKCONSTRAINTS

DBCC CHECKTABLE

DBCC CHECKDB

 

Instructions de maintenance

DBCC CLEANTABLE

DBCC INDEXDEFRAG

DBCC DBREINDEX

DBCC SHRINKDATABASE

DBCC DROPCLEANBUFFERS

DBCC SHRINKFILE

DBCC FREEPROCCACHE

DBCC UPDATEUSAGE

Instructions diverses

DBCC dllname (FREE)

DBCC TRACEOFF

DBCC HELP

DBCC TRACEON