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

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL DatabaseS’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

Vérifie l'intégrité logique et physique de tous les objets de la base de données spécifiée en effectuant les opérations suivantes :Checks the logical and physical integrity of all the objects in the specified database by performing the following operations:

  • Exécute DBCC CHECKALLOC sur la base de données.Runs DBCC CHECKALLOC on the database.
  • Exécute DBCC CHECKTABLE sur chaque table et vue de la base de données.Runs DBCC CHECKTABLE on every table and view in the database.
  • Exécute DBCC CHECKCATALOG sur la base de données.Runs DBCC CHECKCATALOG on the database.
  • Valide le contenu de chaque vue indexée dans la base de données.Validates the contents of every indexed view in the database.
  • Valide la cohérence au niveau du lien entre les métadonnées de la table et les répertoires et les fichiers du système de fichiers lors du stockage de données varbinary(max) dans le système de fichiers à l’aide de FILESTREAM.Validates link-level consistency between table metadata and file system directories and files when storing varbinary(max) data in the file system using FILESTREAM.
  • Valide les données Service BrokerService Broker dans la base de données.Validates the Service BrokerService Broker data in the database.

Cela signifie que l'exécution des commandes DBCC CHECKALLOC, DBCC CHECKTABLE ou DBCC CHECKCATALOG ne doit pas être distincte de celle de DBCC CHECKDB.This means that the DBCC CHECKALLOC, DBCC CHECKTABLE, or DBCC CHECKCATALOG commands do not have to be run separately from DBCC CHECKDB. Pour plus d'informations sur les vérifications réalisées par ces commandes, consultez les descriptions des commandes.For more detailed information about the checks that these commands perform, see the descriptions of these commands.

Notes

DBCC CHECKDB est pris en charge sur les bases de données contenant des tables mémoire optimisées, mais la validation se produit uniquement sur les tables sur disque.DBCC CHECKDB is supported on databases that contain memory-optimized tables but validation only occurs on disk-based tables. Cependant, dans le cadre de la sauvegarde et de la restauration des bases de données, une validation CHECKSUM est effectuée pour les fichiers des groupes de fichiers mémoire optimisés.However, as part of database backup and recovery, a CHECKSUM validation is done for files in memory-optimized filegroups.

Étant donné que options de réparation de DBCC ne sont pas disponibles pour les tables mémoire optimisées, vous devez sauvegarder les bases de données régulièrement et tester les sauvegardes.Since DBCC repair options are not available for memory-optimized tables, you must back up your databases regularly and test the backups. Si des problèmes d'intégrité des données se produisent dans une table mémoire optimisée, vous devez restaurer à partir de la dernière sauvegarde connue et fiable.If data integrity issues occur in a memory-optimized table, you must restore from the last known good backup.

Icône du lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

DBCC CHECKDB     
    [ ( database_name | database_id | 0    
        [ , NOINDEX     
        | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]    
    ) ]    
    [ WITH     
        {    
            [ ALL_ERRORMSGS ]    
            [ , EXTENDED_LOGICAL_CHECKS ]     
            [ , NO_INFOMSGS ]    
            [ , TABLOCK ]    
            [ , ESTIMATEONLY ]    
            [ , { PHYSICAL_ONLY | DATA_PURITY } ]    
            [ , MAXDOP  = number_of_processors ]    
        }    
    ]    
]    

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumentsArguments

database_name | database_id | 0database_name | database_id | 0
Nom ou ID de la base de données pour laquelle vous exécutez des vérifications d'intégrité.Is the name or ID of the database for which to run integrity checks. En l'absence de spécification, ou si 0 est spécifié, la base de données actuelle est utilisée.If not specified, or if 0 is specified, the current database is used. Les noms de base de données doivent suivre les règles applicables aux identificateurs.Database names must comply with the rules for identifiers.

NOINDEXNOINDEX
Indique qu'il ne faut pas effectuer de vérifications intensives des index non cluster pour les tables utilisateur.Specifies that intensive checks of nonclustered indexes for user tables should not be performed. Cela diminue la durée d'exécution globale.This decreases the overall execution time. NOINDEX n'affecte pas les tables système car les vérifications d'intégrité sont toujours effectuées sur leurs index.NOINDEX does not affect system tables because integrity checks are always performed on system table indexes.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Spécifie que DBCC CHECKDB répare les erreurs trouvées.Specifies that DBCC CHECKDB repair the found errors. N'utilisez les options REPAIR qu'en dernier recours.Use the REPAIR options only as a last resort. La base de données spécifiée doit être en mode mono-utilisateur pour pouvoir utiliser l'une des options de réparation suivantes.The specified database must be in single-user mode to use one of the following repair options.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
Tente de réparer toutes les erreurs signalées.Tries to repair all reported errors. Ces réparations peuvent entraîner des pertes de données.These repairs can cause some data loss.

Avertissement

L’option REPAIR_ALLOW_DATA_LOSS est une fonctionnalité prise en charge, mais il ne s’agit pas toujours nécessairement de la meilleure option pour qu’une base de données soit dans un état physiquement cohérent.The REPAIR_ALLOW_DATA_LOSS option is a supported feature but it may not always be the best option for bringing a database to a physically consistent state. En cas de réussite, l'option REPAIR_ALLOW_DATA_LOSS peut entraîner une perte de données.If successful, the REPAIR_ALLOW_DATA_LOSS option may result in some data loss. En fait, elle peut entraîner une perte de données supérieure à celle que vous pourriez constater si un utilisateur restaurait la base de données à partir de la dernière bonne sauvegarde.In fact, it may result in more data lost than if a user were to restore the database from the last known good backup.

MicrosoftMicrosoft recommande toujours d'effectuer une restauration utilisateur à partir de la dernière bonne sauvegarde comme principale méthode pour récupérer suite aux erreurs signalées par DBCC CHECKDB.always recommends a user restore from the last known good backup as the primary method to recover from errors reported by DBCC CHECKDB. L'option REPAIR_ALLOW_DATA_LOSS n'est pas une alternative pour la restauration à partir d'une sauvegarde reconnue fiable.The REPAIR_ALLOW_DATA_LOSS option is not an alternative for restoring from a known good backup. Il s’agit d’une option d’urgence de « dernier recours », recommandée seulement si la restauration à partir d’une sauvegarde n’est pas possible.It is an emergency "last resort" option recommended for use only if restoring from a backup is not possible.

Certaines erreurs, qui peuvent uniquement être réparées à l'aide de l'option REPAIR_ALLOW_DATA_LOSS, peuvent nécessiter de désallouer une ligne, une page ou une série de pages pour effacer les erreurs.Certain errors, that can only be repaired using the REPAIR_ALLOW_DATA_LOSS option, may involve deallocating a row, page, or series of pages to clear the errors. Toutes les données désallouées ne sont plus accessibles ou récupérables par l'utilisateur et le contenu exact des données désallouées ne peut pas être déterminé.Any deallocated data is no longer accessible or recoverable for the user, and the exact contents of the deallocated data cannot be determined. Par conséquent, l'intégrité référentielle peut être inexacte après la désallocation de lignes ou de pages, car les contraintes de clé étrangère ne sont pas vérifiées ou conservées dans le cadre de cette opération de réparation.Therefore, referential integrity may not be accurate after any rows or pages are deallocated because foreign key constraints are not checked or maintained as part of this repair operation. L'utilisateur doit examiner l'intégrité référentielle de sa base de données (à l'aide de DBCC CHECKCONSTRAINTS) après avoir utilisé l'option REPAIR_ALLOW_DATA_LOSS.The user must inspect the referential integrity of their database (using DBCC CHECKCONSTRAINTS) after using the REPAIR_ALLOW_DATA_LOSS option.

Avant d'effectuer la réparation, créez des copies physiques des fichiers qui appartiennent à cette base de données.Before performing the repair, create physical copies of the files that belong to this database. Cela comprend le fichier de données principal (.mdf), les fichiers de données secondaires (.ndf), tous les fichiers de journaux de transactions (.ldf) et autres conteneurs qui forment la base de données, y compris les catalogues de texte intégral, les dossiers de flux de fichiers, les données optimisées en mémoire, etc.This includes the primary data file (.mdf), any secondary data files (.ndf), all transaction log files (.ldf), and other containers that form the database including full text catalogs, file stream folders, memory optimized data, etc.

Avant d'effectuer la réparation, modifiez l'état de la base de données en mode d'urgence et essayez d'extraire autant d'informations que possible à partir des tables critiques et d'enregistrer ces données.Before performing the repair, consider changing the state of the database to EMERGENCY mode and trying to extract as much information possible from the critical tables and save that data.

REPAIR_FASTREPAIR_FAST
Conserve la syntaxe pour une compatibilité descendante uniquement.Maintains syntax for backward compatibility only. Aucune réparation n'est effectuée.No repair actions are performed.

REPAIR_REBUILDREPAIR_REBUILD
Effectue des réparations qui ne présentent aucun risque de perte de données.Performs repairs that have no possibility of data loss. Cela peut inclure des réparations rapides, telles que la réparation de lignes manquantes dans des index non-cluster, ainsi que des réparations nécessitant plus de temps, telles que la reconstruction d’un index.This can include quick repairs, such as repairing missing rows in nonclustered indexes, and more time-consuming repairs, such as rebuilding an index.
Cet argument ne répare pas les erreurs impliquant des données FILESTREAM.This argument does not repair errors involving FILESTREAM data.

Important

Dans la mesure où DBCC CHECKDB avec l'une des options REPAIR est entièrement journalisé et récupérable, MicrosoftMicrosoft recommande toujours d'utiliser CHECKDB avec des options REPAIR dans une transaction (exécutez BEGIN TRANSACTION avant d'exécuter la commande) pour que l'utilisateur puisse confirmer qu'il souhaite accepter les résultats de l'opération.Since DBCC CHECKDB with any of the REPAIR options are completely logged and recoverable, MicrosoftMicrosoft always recommends a user use CHECKDB with any REPAIR options within a transaction (execute BEGIN TRANSACTION before running the command) so that the user can confirm he/she wants to accept the results of the operation. L'utilisateur peut ensuite exécuter COMMIT TRANSACTION pour valider tout le travail effectué par l'opération de réparation.Then the user can execute COMMIT TRANSACTION to commit all work done by the repair operation. Si l'utilisateur ne souhaite pas accepter les résultats de l'opération, il peut exécuter une instruction ROLLBACK TRANSACTION pour annuler les effets des opérations de réparation.If the user does not want to accept the results of the operation, he/she can execute a ROLLBACK TRANSACTION to undo the effects of the repair operations.    

Pour réparer les erreurs, nous vous recommandons d'effectuer une restauration à partir d'une sauvegarde.To repair errors, we recommend restoring from a backup. Les opérations de réparation ne prennent en compte aucune des contraintes qui peuvent exister sur les tables ou entre tables.Repair operations do not consider any of the constraints that may exist on or between tables. Si la table spécifiée est impliquée dans une ou plusieurs contraintes, nous vous recommandons d'exécuter DBCC CHECKCONSTRAINTS après une réparation.If the specified table is involved in one or more constraints, we recommend running DBCC CHECKCONSTRAINTS after a repair operation. Si vous devez utiliser REPAIR, exécutez la commande DBCC CHECKDB sans option de réparation afin de déterminer le niveau de réparation à utiliser.If you must use REPAIR, run DBCC CHECKDB without a repair option to find the repair level to use. Si vous utilisez le niveau REPAIR_ALLOW_DATA_LOSS, nous vous recommandons de sauvegarder la base de données avant d'exécuter la commande DBCC CHECKDB avec cette option.If you use the REPAIR_ALLOW_DATA_LOSS level, we recommend that you back up the database before you run DBCC CHECKDB with this option.

ALL_ERRORMSGSALL_ERRORMSGS
Affiche toutes les erreurs signalées par objet.Displays all reported errors per object. Tous les messages d'erreur sont affichés par défaut.All error messages are displayed by default. La spécification ou non de cette option n'a aucun effet.Specifying or omitting this option has no effect. Les messages d’erreur sont triés par ID d’objet, à l’exception des messages générés à partir de la base de données tempdb.Error messages are sorted by object ID, except for those messages generated from tempdb database.    

EXTENDED_LOGICAL_CHECKSEXTENDED_LOGICAL_CHECKS
Si le niveau de compatibilité est 100 (SQL Server 2008SQL Server 2008) ou supérieur, effectue des vérifications de cohérence logique sur une vue indexée, des index XML et des index spatiaux, là où ils sont présents.If the compatibility level is 100 ( SQL Server 2008SQL Server 2008) or higher, performs logical consistency checks on an indexed view, XML indexes, and spatial indexes, where present.
Pour plus d’informations, consultez Exécution de vérifications de cohérence logique sur des index dans la section Notes, plus loin dans cette rubrique.For more information, see Performing Logical Consistency Checks on Indexes, in the Remarks section later in this topic.

NO_INFOMSGSNO_INFOMSGS
Supprime tous les messages d'information.Suppresses all informational messages.

TABLOCKTABLOCK
Génère des verrouillages par DBCC CHECKDB au lieu d'utiliser un instantané de base de données interne.Causes DBCC CHECKDB to obtain locks instead of using an internal database snapshot. Cette opération comprend un verrou exclusif sur la base de données.This includes a short-term exclusive (X) lock on the database. TABLOCK accélère l'exécution de DBCC CHECKDB sur une base de données dont la charge est importante, tout en diminuant la concurrence disponible dans cette dernière pendant l'exécution de DBCC CHECKDB.TABLOCK will cause DBCC CHECKDB to run faster on a database under heavy load, but decreases the concurrency available on the database while DBCC CHECKDB is running.

Important

TABLOCK limite les vérifications effectuées ; DBCC CHECKCATALOG n'est pas exécuté sur la base de données et les données Service BrokerService Broker ne sont pas validées.TABLOCK limits the checks that are performed; DBCC CHECKCATALOG is not run on the database, and Service BrokerService Broker data is not validated.

ESTIMATEONLYESTIMATEONLY
Affiche une estimation de la quantité d’espace tempdb nécessaire pour exécuter DBCC CHECKDB avec toutes les autres options spécifiées.Displays the estimated amount of tempdb space that is required to run DBCC CHECKDB with all the other specified options. La vérification de la base de données actuelle n'est pas effectuée.The actual database check is not performed.

PHYSICAL_ONLYPHYSICAL_ONLY
Limite la nature de la vérification à l'intégrité de la structure physique sur la page et les en-têtes d'enregistrement, et à l'intégrité de la cohérence d'allocation de la base de données.Limits the checking to the integrity of the physical structure of the page and record headers and the allocation consistency of the database. Cette vérification, qui vise à contrôler la cohérence physique de la base de données, inclut par ailleurs la détection des pages endommagées, des échecs de somme de contrôle et des erreurs matérielles courantes, susceptibles de compromettre les données utilisateur.This check is designed to provide a small overhead check of the physical consistency of the database, but it can also detect torn pages, checksum failures, and common hardware failures that can compromise a user's data.
Une exécution complète de DBCC CHECKDB peut prendre beaucoup plus de temps que dans les versions antérieures.A full run of DBCC CHECKDB may take considerably longer to complete than earlier versions. Ce problème se produit parce que :This behavior occurs because:

  • Les vérifications logiques sont plus complètes.The logical checks are more comprehensive.
  • Certaines des structures sous-jacentes à vérifier sont plus complexes.Some of the underlying structures to be checked are more complex.
  • De nombreuses vérifications nouvelles ont été introduites pour inclure les nouvelles fonctionnalités.Many new checks have been introduced to include the new features.
    Par conséquent, l'utilisation de l'option PHYSICAL_ONLY étant susceptible de réduire considérablement la durée d'exécution de DBCC CHECKDB sur des bases de données volumineuses, elle est recommandée pour une utilisation fréquente sur des systèmes de production.Therefore, using the PHYSICAL_ONLY option may cause a much shorter run-time for DBCC CHECKDB on large databases and is recommended for frequent use on production systems. Nous vous recommandons d'effectuer régulièrement une exécution complète de DBCC CHECKDB.We still recommend that a full run of DBCC CHECKDB be performed periodically. La fréquence de ces exécutions dépend de facteurs spécifiques à chaque entreprise et à chaque environnement de production.The frequency of these runs depends on factors specific to individual businesses and production environments.
    Cet argument implique toujours NO_INFOMSGS et n’est autorisé avec aucune des options de réparation.This argment always implies NO_INFOMSGS and is not allowed with any one of the repair options.

Avertissement

La spécification de l'option PHYSICAL_ONLY fait que DBCC CHECKDB ignorera toutes les vérifications des données FILESTREAM.Specifying PHYSICAL_ONLY causes DBCC CHECKDB to skip all checks of FILESTREAM data.

DATA_PURITYDATA_PURITY
Génère la vérification de la base de données par DBCC CHECKDB pour les valeurs de colonnes qui ne sont pas valides ou hors limites.Causes DBCC CHECKDB to check the database for column values that are not valid or out-of-range. Par exemple, DBCC CHECKDB détecte des colonnes dont les dates et les heures sont supérieures ou inférieures à la plage acceptable pour le type de données datetime. Cette commande identifie aussi des colonnes de type decimal ou numeric approximatif avec des valeurs d’échelle ou de précision qui ne sont pas valides.For example, DBCC CHECKDB detects columns with date and time values that are larger than or less than the acceptable range for the datetime data type; or decimal or approximate-numeric data type columns with scale or precision values that are not valid.
Les vérifications d'intégrité sur la base colonne-valeur sont activées par défaut et ne nécessitent pas l'option DATA_PURITY.Column-value integrity checks are enabled by default and do not require the DATA_PURITY option. Pour les bases de données mises à niveau à partir des versions antérieures de SQL ServerSQL Server, les vérifications sur la base colonne-valeur ne sont pas activées par défaut tant que la commande DBCC CHECKDB WITH DATA_PURITY n'est pas exécutée sans erreur sur cette base de données.For databases upgraded from earlier versions of SQL ServerSQL Server, column-value checks are not enabled by default until DBCC CHECKDB WITH DATA_PURITY has been run error free on the database. Ensuite, DBCC CHECKDB vérifie l'intégrité sur la base colonne-valeur par défaut.After this, DBCC CHECKDB checks column-value integrity by default. Pour plus d'informations sur les incidences sur CHECKDB suite à une mise à niveau de la base de données à partir de versions antérieures de SQL ServerSQL Server, consultez la section Notes, plus loin dans cette rubrique.For more information about how CHECKDB might be affected by upgrading database from earlier versions of SQL ServerSQL Server, see the Remarks section later in this topic.

Avertissement

Si PHYSICAL_ONLY est spécifié, l'intégrité des colonnes n'est pas vérifiée.If PHYSICAL_ONLY is specified, column-integrity checks are not performed.

Les erreurs de validation signalées par cette option ne peuvent pas être corrigées à l'aide des options de réparation DBCC.Validation errors reported by this option cannot be fixed by using DBCC repair options. Pour des informations sur la correction manuelle de ces erreurs, consultez l’article 923247 (en anglais) de la Base de connaissances : Dépannage d’erreur DBCC 2570 dans SQL Server 2005 et versions ultérieures.For information about manually correcting these errors, see Knowledge Base article 923247: Troubleshooting DBCC error 2570 in SQL Server 2005 and later versions.

MAXDOPMAXDOP
S’applique à : SQL ServerSQL Server (SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 et versions ultérieures).Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and later).

Remplace l’option de configuration max degree of parallelism de sp_configure pour l’instruction.Overrides the max degree of parallelism configuration option of sp_configure for the statement. MAXDOP peut dépasser la valeur configurée avec sp_configure.The MAXDOP can exceed the value configured with sp_configure. Si MAXDOP dépasse la valeur configurée avec Resource Governor, le Moteur de base de données SQL ServerSQL Server Database Engine utilise la valeur MAXDOP de Resource Governor, décrite dans ALTER WORKLOAD GROUP.If MAXDOP exceeds the value configured with Resource Governor, the Moteur de base de données SQL ServerSQL Server Database Engine uses the Resource Governor MAXDOP value, described in ALTER WORKLOAD GROUP. Toutes les règles sémantiques utilisées avec l'option de configuration max degree of parallelism sont applicables lorsque vous utilisez l'indicateur de requête MAXDOP.All semantic rules used with the max degree of parallelism configuration option are applicable when you use the MAXDOP query hint. Pour plus d’informations, consultez Configurer l’option de configuration du serveur max degree of parallelism.For more information, see Configure the max degree of parallelism Server Configuration Option.

Avertissement

Si MAXDOP est défini avec la valeur zéro, SQL Server choisit le degré maximal de parallélisme à utiliser.If MAXDOP is set to zero then SQL Server chooses the max degree of parallelism to use.    

NotesRemarks

DBCC CHECKDB n'examine pas les index désactivés.DBCC CHECKDB does not examine disabled indexes. Pour plus d’informations sur les index désactivés, consultez Désactiver les index et contraintes.For more information about disabled indexes, see Disable Indexes and Constraints.

Si un type défini par l'utilisateur est marqué comme étant ordonné par octet, il ne doit y avoir qu'une seule sérialisation du type défini par l'utilisateur.If a user-defined type is marked as being byte ordered, there must only be one serialization of the user-defined type. En l'absence de sérialisation cohérente de type défini par l'utilisateur ordonné par octet, l'erreur 2537 est générée à l'exécution de DBCC CHECKDB.Not having a consistent serialization of byte-ordered user-defined types causes error 2537 when DBCC CHECKDB is run. Pour plus d’informations, consultez Configuration requise pour les types définis par l’utilisateur.For more information, see User-Defined Type Requirements.

Étant donné que la base de données Resource est modifiable uniquement en mode mono-utilisateur, vous ne pouvez pas y exécuter la commande DBCC CHECKDB directement.Because the Resource database is modifiable only in single-user mode, the DBCC CHECKDB command cannot be run on it directly. Cependant, lors de l’exécution de DBCC CHECKDB sur la base de données master, une deuxième commande CHECKDB est également exécutée en interne sur la base de données Resource.However, when DBCC CHECKDB is executed against the master database, a second CHECKDB is also run internally on the Resource database. Cela signifie que DBCC CHECKDB peut retourner des résultats supplémentaires.This means that DBCC CHECKDB can return extra results. La commande retourne des jeux de résultats supplémentaires lorsqu'aucune option n'est définie ou lorsque l'option PHYSICAL_ONLY ou ESTIMATEONLY est définie.The command returns extra result sets when no options are set, or when either the PHYSICAL_ONLY or ESTIMATEONLY option is set.

À compter de SQL Server 2005 (9.x)SQL Server 2005 (9.x) SP2, l’exécution de la commande DBCC CHECKDB n’efface plus le cache du plan pour l’instance de SQL ServerSQL Server.Starting with SQL Server 2005 (9.x)SQL Server 2005 (9.x) SP2, executing DBCC CHECKDB no longer clears the plan cache for the instance of SQL ServerSQL Server. Avant SQL Server 2005 (9.x)SQL Server 2005 (9.x) SP2, l’exécution de la commande DBCC CHECKDB effaçait le cache du plan.Before SQL Server 2005 (9.x)SQL Server 2005 (9.x) SP2, executing DBCC CHECKDB clears the plan cache. Cette opération entraîne la recompilation de tous les plans d'exécution ultérieurs et peut entraîner une baisse temporaire et brutale des performances des requêtes.Clearing the plan cache causes recompilation of all later execution plans and may cause a sudden, temporary decrease in query performance.

Exécution de vérifications de cohérence logique sur des indexPerforming Logical Consistency Checks on Indexes

La vérification de la cohérence logique sur les index varie selon le niveau de compatibilité de la base de données, comme suit :Logical consistency checking on indexes varies according to the compatibility level of the database, as follows:

  • Si le niveau de compatibilité est égal à 100 (SQL Server 2008SQL Server 2008) ou supérieur :If the compatibility level is 100 (SQL Server 2008SQL Server 2008) or higher:
  • À moins que l'option NOINDEX soit spécifiée, DBCC CHECKDB effectue des vérifications de cohérence physique et logique sur une table individuelle et sur tous ses index non-cluster.Unless NOINDEX is specified, DBCC CHECKDB performs both physical and logical consistency checks on a single table and on all its nonclustered indexes. Toutefois, seules des vérifications de cohérence physique sont effectuées par défaut sur les index XML, les index spatiaux et les vues indexées.However, on XML indexes, spatial indexes, and indexed views only physical consistency checks are performed by default.
  • Si WITH EXTENDED_LOGICAL_CHECKS est spécifié, des vérifications logiques sont effectuées sur une vue indexée, des index XML et des index spatiaux, là où ils sont présents.If WITH EXTENDED_LOGICAL_CHECKS is specified, logical checks are performed on an indexed view, XML indexes, and spatial indexes, where present. Par défaut, les vérifications de cohérence physique sont effectuées avant les vérifications de cohérence logique.By default, physical consistency checks are performed before the logical consistency checks. Si NOINDEX est également spécifié, seules les vérifications logiques sont effectuées.If NOINDEX is also specified, only the logical checks are performed.

Ces vérifications de cohérence logique effectuent une vérification croisée de la table d'index interne de l'objet d'index avec la table utilisateur à laquelle il fait référence.These logical consistency checks cross check the internal index table of the index object with the user table that it is referencing. Pour rechercher les lignes excentrées, une requête interne est construite pour effectuer l'intersection complète de la table interne et de la table utilisateur.To find outlying rows, an internal query is constructed to perform a full intersection of the internal and user tables. L'exécution de cette requête peut avoir un effet très important sur les performances et il n'est pas possible de suivre sa progression.Running this query can have a very high effect on performance, and its progress cannot be tracked. Par conséquent, nous vous recommandons de spécifier WITH EXTENDED_LOGICAL_CHECKS seulement si vous soupçonnez des problèmes d'index qui ne sont pas liés à une altération physique ou si les sommes de contrôle au niveau de la page ont été désactivées et que vous soupçonnez un endommagement matériel au niveau des colonnes.Therefore, we recommend that you specify WITH EXTENDED_LOGICAL_CHECKS only if you suspect index issues that are unrelated to physical corruption, or if page-level checksums have been turned off and you suspect column-level hardware corruption.

  • Si l'index est un index filtré, DBCC CHECKDB effectue des vérifications de cohérence pour vérifier que les entrées de l'index satisfont le prédicat du filtre.If the index is a filtered index, DBCC CHECKDB performs consistency checks to verify that the index entries satisfy the filter predicate.
  • Si le niveau de compatibilité est égal ou inférieur à 90, à moins que l'option NOINDEX soit spécifiée, DBCC CHECKDB effectue à la fois des vérifications de cohérence physique et logique sur une seule table ou vue indexée et sur tous ses index non-cluster et XML.If the compatibility level is 90 or less, unless NOINDEX is specified, DBCC CHECKDB performs both physical and logical consistency checks on a single table or indexed view and on all its nonclustered and XML indexes. Les index spatiaux ne sont pas pris en charge.Spatial indexes are not supported.
  • À compter de SQL Server 2016, les vérifications supplémentaires sur les colonnes calculées persistantes, les colonnes UDT et les index filtrés ne seront pas exécutées par défaut afin d’éviter les évaluations d’expressions coûteuses.Starting with SQL Server 2016, additional checks on persisted computed columns, UDT columns, and filtered indexes will not run by default to avoid the expensive expression evaluations. Cette modification réduit considérablement la durée de CHECKDB sur les bases de données contenant ces objets.This change greatly reduces the duration of CHECKDB against databases containing these objects. Cependant, les vérifications de cohérence physique de ces objets sont toujours effectuées.However, the physical consistency checks of these objects is always completed. Les évaluations d’expressions ne seront effectuées en plus des vérifications logiques déjà présentes (vue indexée, index XML et index spatiaux) dans le cadre de l’option EXTENDED_LOGICAL_CHECKS que quand l’option EXTENDED_LOGICAL_CHECKS est spécifiée.Only when EXTENDED_LOGICAL_CHECKS option is specified will the expression evaluations be performed in addition to already present logical checks (indexed view, XML indexes, and spatial indexes) as part of the EXTENDED_LOGICAL_CHECKS option.

Pour connaître le niveau de compatibilité d’une base de donnéesTo learn the compatibility level of a database

Instantané de base de données interneInternal Database Snapshot

DBCC CHECKDB utilise un instantané de base de données interne pour la cohérence transactionnelle nécessaire à la réalisation de ces vérifications.DBCC CHECKDB uses an internal database snapshot for the transactional consistency needed to perform these checks. 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 Afficher la taille du fichier partiellement alloué d’un instantané de base de données (Transact-SQL) et la section Utilisation de l’instantané de base de données interne DBCC dans DBCC (Transact-SQL).For more information, see View the Size of the Sparse File of a Database Snapshot (Transact-SQL) and the DBCC Internal Database Snapshot Usage section in DBCC (Transact-SQL). Si vous ne pouvez créer aucun instantané ou si TABLOCK est spécifié, la commande DBCC CHECKDB acquiert des verrous pour obtenir la cohérence requise.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKDB acquires locks to obtain the required consistency. Dans ce cas, un verrou de base de données exclusif est requis pour effectuer les vérifications d'allocation, tandis que des verrous de table partagés sont nécessaires pour effectuer les vérifications de table.In this case, an exclusive database lock is required to perform the allocation checks, and shared table locks are required to perform the table checks. 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 run against master if an internal database snapshot cannot be created. L’exécution de la commande DBCC CHECKDB sur tempdb ne procède à aucune allocation et ne vérifie aucun catalogue. Elle doit acquérir des verrous de table partagés pour vérifier ces tables.Running DBCC CHECKDB against tempdb does not perform any allocation or catalog checks and must acquire shared table locks to perform table checks. En effet, pour des raisons de performances, les instantanés de base de données ne sont pas disponibles sur tempdb.This is because, for performance reasons, database snapshots are not available on tempdb. Cela signifie que la cohérence transactionnelle requise ne peut pas être obtenue.This means that the required transactional consistency cannot be obtained. Dans Microsoft SQL Server 2012 ou une version antérieure de SQL Server, vous pouvez rencontrer des messages d’erreur quand vous exécutez la commande DBCC CHECKDB pour une base de données dont les fichiers sont situés sur un volume au format ReFS.In Microsoft SQL Server 2012 or an earlier version of SQL Server, you may encounter error messages when you run the DBCC CHECKDB command for a database that has its files located on an ReFS-formatted volume. Pour plus d’informations, consultez l’article 2974455 de la Base de connaissances : Comportement de DBCC CHECKDB quand la base de données SQL Server se trouve sur un volume ReFS.For more information, see Knowledge Base article 2974455: DBCC CHECKDB behavior when the SQL Server database is located on an ReFS volume.

Vérification et réparation des données FILESTREAMChecking and Repairing FILESTREAM Data

Quand FILESTREAM est activé pour une base de données et une table, vous pouvez éventuellement stocker des objets BLOB(Binary Large Object) varbinary(max) dans le système de fichiers.When FILESTREAM is enabled for a database and table, you can optionally store varbinary(max) binary large objects (BLOBs) in the file system. Lorsque vous utilisez DBCC CHECKDB sur une base de données qui stocke des objets BLOB dans le système de fichiers, DBCC vérifie la cohérence au niveau du lien entre le système de fichiers et la base de données.When using DBCC CHECKDB on a database that stores BLOBs in the file system, DBCC checks link-level consistency between the file system and database. Par exemple, si une table contient une colonne varbinary(max) qui utilise l’attribut FILESTREAM, DBCC CHECKDB vérifiera qu’il existe un mappage un-à-un entre les répertoires et les fichiers du système de fichiers et les lignes, les colonnes et les valeurs de colonne de la table.For example, if a table contains a varbinary(max) column that uses the FILESTREAM attribute, DBCC CHECKDB will check that there is a one-to-one mapping between file system directories and files and table rows, columns, and column values. DBCC CHECKDB peut réparer l'altération si vous spécifiez l'option REPAIR_ALLOW_DATA_LOSS.DBCC CHECKDB can repair corruption if you specify the REPAIR_ALLOW_DATA_LOSS option. Pour réparer l'altération FILESTREAM, DBCC supprime toutes les lignes de la table auxquelles il manque des données du système de fichiers.To repair FILESTREAM corruption, DBCC will delete any table rows that are missing file system data.

Bonnes pratiquesBest Practices

Nous vous recommandons d'utiliser l'option PHYSICAL_ONLY pour une utilisation fréquente sur des systèmes de production.We recommend that you use the PHYSICAL_ONLY option for frequent use on production systems. L'utilisation de PHYSICAL_ONLY permet de raccourcir nettement le temps d'exécution de DBCC CHECKDB sur des bases de données volumineuses.Using PHYSICAL_ONLY can greatly shorten run-time for DBCC CHECKDB on large databases. Nous vous conseillons également d'exécuter régulièrement DBCC CHECKDB sans option.We also recommend that you periodically run DBCC CHECKDB with no options. La fréquence à laquelle vous devez effectuer ces exécutions dépend de chaque activité et de son environnement de production.How frequently you should perform these runs depends on individual businesses and their production environments.

Vérification des objets en parallèleChecking Objects in Parallel

DBCC CHECKDB effectue par défaut une vérification parallèle des objets.By default, DBCC CHECKDB performs parallel checking of objects. Le degré de parallélisme est automatiquement défini par le processeur de requêtes.The degree of parallelism is automatically determined by the query processor. Le degré maximum de parallélisme est configuré de la même manière que les requêtes parallèles.The maximum degree of parallelism is configured just like parallel queries. Pour limiter le nombre maximal de processeurs disponibles pour la vérification DBCC, utilisez sp_configure.To restrict the maximum number of processors available for DBCC checking, use sp_configure. Pour plus d’informations, consultez Configurer l’option de configuration du serveur max degree of parallelism.For more information, see Configure the max degree of parallelism Server Configuration Option. La vérification parallèle peut être désactivée à l'aide de l'indicateur de trace 2528.Parallel checking can be disabled by using trace flag 2528. Pour plus d’informations, consultez Indicateurs de trace (Transact-SQL).For more information, see Trace Flags (Transact-SQL).

Notes

Cette fonctionnalité n'est pas disponible dans toutes les éditions de SQL ServerSQL Server.This feature is not available in every edition of SQL ServerSQL Server. Pour plus d’informations, consultez les vérifications de cohérence parallèles dans la section Gestion de SGBDR de Fonctionnalités prises en charge par les éditions de SQL Server 2016.For more information, see parallel consistency check in the RDBMS Manageability section of Features Supported by the Editions of SQL Server 2016.

Présentation des messages d'erreur de DBCCUnderstanding DBCC Error Messages

Une fois la commande DBCC CHECKDB exécutée, un message est consigné dans le journal d'erreurs de SQL ServerSQL Server.After the DBCC CHECKDB command finishes, a message is written to the SQL ServerSQL Server error log. Si la commande DBCC est correctement exécutée, le message indique que l'exécution a réussi, ainsi que la durée d'exécution de la commande.If the DBCC command successfully executes, the message indicates success and the amount of time that the command ran. Si la commande DBCC est interrompue avant la fin de la vérification en raison d'une erreur, le message indique que la commande n'a pas abouti, précise une valeur d'état ainsi que la durée d'exécution de la commande.If the DBCC command stops before completing the check because of an error, the message indicates that the command was terminated, a state value, and the amount of time the command ran. Le tableau suivant répertorie et décrit les valeurs d'état pouvant être incluses dans le message.The following table lists and describes the state values that can be included in the message.

StateState DescriptionDescription
00 Erreur numéro 8930 générée.Error number 8930 was raised. Ceci indique une corruption des métadonnées qui a arrêté la commande DBCC.This indicates a corruption in metadata that terminated the DBCC command.
11 Erreur numéro 8967 générée.Error number 8967 was raised. Une erreur DBCC interne s'est produite.There was an internal DBCC error.
22 Une erreur s'est produite lors de la réparation de la base de données en mode urgence.A failure occurred during emergency mode database repair.
33 Ceci indique une corruption des métadonnées qui a arrêté la commande DBCC.This indicates a corruption in metadata that terminated the DBCC command.
44 Une assertion ou une violation d'accès a été détectée.An assert or access violation was detected.
55 Une erreur inconnue s'est produite et a arrêté la commande DBCC.An unknown error occurred that terminated the DBCC command.

Notes

SQL ServerSQL Server enregistre la date et l’heure d’exécution d’une vérification de cohérence pour une base de données sans erreurs (ou une vérification de cohérence « propre »).records the date and time when a consistency check was run for a database with no errors (or "clean" consistency check). C’est ce que l’on appelle last known clean check.This is known as the last known clean check. Quand une base de données est démarrée pour la première fois, cette date est écrite dans le journal des événements (EventID-17573) et dans le journal des erreurs au format suivant :When a database is first started, this date is written to the EventLog (EventID-17573) and ERRORLOG in the following format:

CHECKDB for database '<database>' finished without errors on 2019-05-05 18:08:22.803 (local time). This is an informational message only; no user action is required.

Rapport d'erreursError Reporting

Un fichier de vidage (SQLDUMP*nnnn*.txt) est créé dans le répertoire LOG de SQL ServerSQL Server chaque fois que DBCC CHECKDB détecte une erreur d’endommagement.A dump file (SQLDUMP*nnnn*.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKDB detects a corruption error. Quand les fonctionnalités Rapport d’erreurs et de collecte des données Utilisation de fonctionnalités sont activées pour l’instance de SQL ServerSQL Server, ce fichier est automatiquement transféré à MicrosoftMicrosoft.When the Feature Usage data collection and Error Reporting features are enabled for the instance of SQL ServerSQL Server, the file is automatically forwarded to MicrosoftMicrosoft. Les données collectées sont utilisées pour améliorer les fonctionnalités SQL ServerSQL Server.The collected data is used to improve SQL ServerSQL Server functionality. Le fichier de vidage contient les résultats de la commande DBCC CHECKDB ainsi que des informations de diagnostic supplémentaires.The dump file contains the results of the DBCC CHECKDB command and additional diagnostic output. L’accès est limité au compte de service SQL ServerSQL Server et aux membres du rôle sysadmin.Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. Par défaut, le rôle sysadmin contient tous les membres du groupe Windows BUILTIN\Administrators et du groupe Administrateurs local.By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. La commande DBCC n'échoue pas si le processus de collecte des données échoue.The DBCC command does not fail if the data collection process fails.

Résolution des erreursResolving Errors

Si des erreurs sont signalées par DBCC CHECKDB, nous vous recommandons de restaurer la base de données à partir de sa sauvegarde plutôt que d'exécuter REPAIR avec une des options correspondantes.If any errors are reported by DBCC CHECKDB, we recommend restoring the database from the database backup instead of running REPAIR with one of the REPAIR options. En cas d'absence de sauvegarde, la réparation corrige les erreurs détectées.If no backup exists, running repair corrects the errors reported. Cette option de réparation est spécifiée à la fin de la liste des erreurs signalées.The repair option to use is specified at the end of the list of reported errors. Néanmoins, la correction des erreurs à l'aide de l'option REPAIR_ALLOW_DATA_LOSS risque de nécessiter que certaines pages, et par conséquent certaines données, soient supprimées.However, correcting the errors by using the REPAIR_ALLOW_DATA_LOSS option might require deleting some pages, and therefore some data.

Dans de telles circonstances, des valeurs risquent d'être entrées dans la base de données, alors qu'elles ne sont pas valides ou qu'elles sont hors limites, en fonction du type de données de la colonne.Under some circumstances, values might be entered into the database that are not valid or out-of-range based on the data type of the column. DBCC CHECKDB peut détecter des valeurs de colonne non valides pour tous les types de données de colonne.DBCC CHECKDB can detect column values that are not valid for all column data types. Ainsi, l'exécution de DBCC CHECKDB avec l'option DATA_PURITY sur des bases de données mises à niveau à partir de versions antérieures de SQL ServerSQL Server risque de révéler des erreurs pré-existantes de valeur-colonne.Therefore, running DBCC CHECKDB with the DATA_PURITY option on databases that have been upgraded from earlier versions of SQL ServerSQL Server might reveal preexisting column-value errors. Comme SQL ServerSQL Server ne peut pas réparer automatiquement ces erreurs, vous devez mettre à jour la valeur de la colonne manuellement.Because SQL ServerSQL Server cannot automatically repair these errors, the column value must be manually updated. Si CHECKDB détecte une telle erreur, CHECKDB retourne un avertissement, le numéro d'erreur 2570 et des informations pour identifier la ligne adéquate et corriger l'erreur manuellement.If CHECKDB detects such an error, CHECKDB returns a warning, the error number 2570, and information to identify the affected row and manually correct the error.

La réparation peut être effectuée dans une transaction utilisateur pour permettre à celui-ci d'annuler les modifications effectuées.The repair can be performed under a user transaction to let the user roll back the changes that were made. Si des réparations sont restaurées, la base de données contiendra encore des erreurs et il faudra donc la restaurer à partir d'une sauvegarde.If repairs are rolled back, the database will still contain errors and must be restored from a backup. Une fois les réparations effectuées, sauvegardez la base de données.After repairs are completed, back up the database.

Résolution des erreurs en mode urgence dans la base de donnéesResolving Errors in Database Emergency Mode

Quand une base de données a été placée en mode urgence à l’aide de l’instruction ALTER DATABASE et que l’option REPAIR_ALLOW_DATA_LOSS est spécifiée, DBCC CHECKDB peut réaliser certaines réparations particulières sur la base de données.When a database has been set to emergency mode by using the ALTER DATABASE statement, DBCC CHECKDB can perform some special repairs on the database if the REPAIR_ALLOW_DATA_LOSS option is specified. Ces réparations peuvent éventuellement aboutir à la remise en ligne dans un état physiquement cohérent de bases de données irrécupérables en temps normal.These repairs may allow for ordinarily unrecoverable databases to be brought back online in a physically consistent state. Vous devez utiliser ces réparations en dernier recours et uniquement lorsque vous ne pouvez pas restaurer la base de données à partir d'une sauvegarde.These repairs should be used as a last resort and only when you cannot restore the database from a backup. Si la base de données est placée en mode urgence, elle est marquée comme READ_ONLY, la journalisation est désactivée et l’accès est limité aux membres du rôle serveur fixe sysadmin.When the database is set to emergency mode, the database is marked READ_ONLY, logging is disabled, and access is limited to members of the sysadmin fixed server role.

Notes

Vous ne pouvez pas exécuter la commande DBCC CHECKDB en mode urgence dans une transaction utilisateur puis restaurer celle-ci au terme de l'exécution.You cannot run the DBCC CHECKDB command in emergency mode inside a user transaction and roll back the transaction after execution.

Si la base de données est placée en mode urgence et que DBCC CHECKDB est exécutée avec la clause REPAIR_ALLOW_DATA_LOSS, les actions suivantes se produisent :When the database is in emergency mode and DBCC CHECKDB with the REPAIR_ALLOW_DATA_LOSS clause is run, the following actions are taken:

  • DBCC CHECKDB utilise les pages marquées comme inaccessibles en raison d'erreurs d'E/S ou de somme de contrôle, comme si aucune erreur ne s'était produite.DBCC CHECKDB uses pages that have been marked inaccessible because of I/O or checksum errors, as if the errors have not occurred. Cette procédure améliore les chances de récupérer les données de la base de données.Doing this increases the chances for data recovery from the database.
  • DBCC CHECKDB tente de récupérer la base de données au moyen de techniques classiques de récupération basées sur les fichiers journaux.DBCC CHECKDB attempts to recover the database using regular log-based recovery techniques.
  • Si, en raison de la corruption du journal des transactions, la récupération de la base de données échoue, le journal de transactions est reconstruit.If, because of transaction log corruption, database recovery is unsuccessful, the transaction log is rebuilt. La reconstruction du journal des transactions peut nuire à la cohérence transactionnelle.Rebuilding the transaction log may result in the loss of transactional consistency.

Avertissement

L'option REPAIR_ALLOW_DATA_LOSS est une fonctionnalité prise en charge de SQL ServerSQL Server.The REPAIR_ALLOW_DATA_LOSS option is a supported feature of SQL ServerSQL Server. Toutefois, il ne s'agit pas toujours nécessairement de la meilleure option pour mettre une base de données à un état physiquement cohérent.However, it may not always be the best option for bringing a database to a physically consistent state. En cas de réussite, l'option REPAIR_ALLOW_DATA_LOSS peut entraîner une perte de données.If successful, the REPAIR_ALLOW_DATA_LOSS option may result in some data loss. En fait, elle peut entraîner une perte de données supérieure à celle que vous pourriez constater si un utilisateur restaurait la base de données à partir de la dernière bonne sauvegarde.In fact, it may result in more data lost than if a user were to restore the database from the last known good backup. MicrosoftMicrosoft recommande toujours d'effectuer une restauration utilisateur à partir de la dernière bonne sauvegarde comme principale méthode pour récupérer suite aux erreurs signalées par DBCC CHECKDB.always recommends a user restore from the last known good backup as the primary method to recover from errors reported by DBCC CHECKDB. L’option REPAIR_ALLOW_DATA_LOSS n’est pas une alternative pour une restauration à partir d’une sauvegarde reconnue fiable.The REPAIR_ALLOW_DATA_LOSS option is not an alternative for restoring from a known good backup. Il s’agit d’une option d’urgence de « dernier recours », recommandée seulement si la restauration à partir d’une sauvegarde n’est pas possible.It is an emergency "last resort" option recommended for use only if restoring from a backup is not possible.

Après la reconstruction du journal, il n'existe aucune garantie ACID totale.After rebuilding the log, there is no full ACID guarantee.

Après la reconstruction du journal, DBCC CHECKDB est exécutée automatiquement et signale et corrige les problèmes de cohérence physique.After rebuilding the log, DBCC CHECKDB will be automatically performed and will both report and correct physical consistency issues.

La cohérence logique des données et les contraintes appliquées par la logique d'entreprise doivent être validées manuellement.Logical data consistency and business logic enforced constraints must be validated manually.

La taille du journal des transactions reste à sa taille par défaut et doit être réajustée manuellement à sa taille récente.The transaction log size will be left to its default size and must be manually adjusted back to its recent size.

Si la commande DBCC CHECKDB réussit, la base de données est physiquement cohérente et son état prend la valeur ONLINE.If the DBCC CHECKDB command succeeds, the database is in a physically consistent state and the database status is set to ONLINE. Toutefois, la base de données peut contenir une ou plusieurs incohérences transactionnelles.However, the database may contain one or more transactional inconsistencies. Nous vous recommandons d’exécuter DBCC CHECKCONSTRAINTS pour identifier tout défaut de logique métier et de sauvegarder immédiatement la base de données.We recommend that you run DBCC CHECKCONSTRAINTS to identify any business logic flaws and immediately back up the database. Si la commande DBCC CHECKDB échoue, la base de données ne peut pas être réparée.If the DBCC CHECKDB command fails, the database cannot be repaired.

Exécution de DBCC CHECKDB avec REPAIR_ALLOW_DATA_LOSS dans des bases de données répliquéesRunning DBCC CHECKDB with REPAIR_ALLOW_DATA_LOSS in Replicated Databases

L'exécution de la commande DBCC CHECKDB avec l'option REPAIR_ALLOW_DATA_LOSS peut avoir des conséquences sur les bases de données utilisateur (bases de données de publication et d'abonnement) ainsi que sur la base de données de distribution utilisée par la réplication.Running the DBCC CHECKDB command with the REPAIR_ALLOW_DATA_LOSS option can affect user databases (publication and subscription databases) and the distribution database used by replication. Les bases de données de publication et d'abonnement incluent des tables publiées et des tables de métadonnées de réplication.Publication and subscription databases include published tables and replication metadata tables. Sachez que les problèmes suivants peuvent se poser dans ces bases de données :Be aware of the following potential issues in these databases:

  • Tables publiées.Published tables. Il est possible que les actions effectuées par le processus CHECKDB pour réparer les données utilisateur corrompues ne soient pas répliquées :Actions performed by the CHECKDB process to repair corrupt user data might not be replicated:
  • La réplication de fusion utilise des déclencheurs pour assurer le suivi des modifications apportées aux tables publiées.Merge replication uses triggers to track changes to published tables. Si des lignes sont insérées, mises à jour ou supprimées par le processus CHECKDB, les déclencheurs ne sont pas activés : la modification n'est donc pas répliquée.If rows are inserted, updated, or deleted by the CHECKDB process, triggers do not fire; therefore, the change is not replicated.
  • La réplication transactionnelle utilise le journal des transactions pour assurer le suivi des modifications apportées aux tables publiées.Transactional replication uses the transaction log to track changes to published tables. L'Agent de lecture du journal place ensuite ces modifications dans la base de données de distribution.The Log Reader Agent then moves these changes to the distribution database. Certaines réparations de DBCC, bien qu'elles soient consignées dans le journal, ne peuvent pas être répliquées par l'Agent de lecture du journal.Some DBCC repairs, although logged, cannot be replicated by the Log Reader Agent. Par exemple, si une page de données est désallouée par le processus CHECKDB, l'Agent de lecture du journal ne la convertit pas en instruction DELETE ; par conséquent, la modification n'est pas répliquée.For example, if a data page is deallocated by the CHECKDB process, the Log Reader Agent does not translate this to a DELETE statement; therefore, the change is not replicated.
  • Tables de métadonnées de réplication.Replication metadata tables. Pour les actions effectuées par le processus CHECKDB afin de réparer les tables de métadonnées de réplication corrompues, la réplication doit être supprimée puis reconfigurée.Actions performed by the CHECKDB process to repair corrupt replication metadata tables require removing and reconfiguring replication.

Si vous devez exécuter la commande DBCC CHECKDB avec l'option REPAIR_ALLOW_DATA_LOSS sur une base de données utilisateur ou de distribution :If you have to run the DBCC CHECKDB command with the REPAIR_ALLOW_DATA_LOSS option on a user database or distribution database:

  1. Suspendez le système : arrêtez l'activité sur la base de données et toutes les autres bases de données appartenant à la topologie de réplication, puis tentez de synchroniser tous les nœuds.Quiesce the system: Stop activity on the database and at all other databases in the replication topology, and then try to synchronize all nodes. Pour plus d’informations, consultez Suspendre une topologie de réplication (programmation Transact-SQL de la réplication).For more information, see Quiesce a Replication Topology (Replication Transact-SQL Programming).
  2. Exécutez DBCC CHECKDB.Execute DBCC CHECKDB.
  3. Si le rapport DBCC CHECKDB inclut des réparations pour des tables de la base de données de distribution ou des tables de métadonnées de réplication dans une base de données utilisateur, supprimez et reconfigurez la réplication.If the DBCC CHECKDB report includes repairs for any tables in the distribution database or any replication metadata tables in a user database, remove and reconfigure replication. Pour plus d’informations, consultez Désactiver la publication et la distribution.For more information, see Disable Publishing and Distribution.
  4. Si le rapport DBCC CHECKDB inclut des réparations pour des tables répliquées, procédez à une validation des données pour déterminer s'il existe des différences entre les données de la base de données de publication et celles de la base de données d'abonnement.If the DBCC CHECKDB report includes repairs for any replicated tables, perform data validation to determine whether there are differences between the data in the publication and subscription databases.

Jeux de résultatsResult Sets

DBCC CHECKDB retourne le jeu de résultats suivant.DBCC CHECKDB returns the following result set. Les valeurs risquent de varier, à moins que les options ESTIMATEONLY, PHYSICAL_ONLY ou NO_INFOMSGS soient spécifiées :The values might vary except when the ESTIMATEONLY, PHYSICAL_ONLY, or NO_INFOMSGS options are specified:

 DBCC results for 'model'.    
    
 Service Broker Msg 9675, Level 10, State 1: Message Types analyzed: 13.    
    
 Service Broker Msg 9676, Level 10, State 1: Service Contracts analyzed: 5.    
    
 Service Broker Msg 9667, Level 10, State 1: Services analyzed: 3.    
    
 Service Broker Msg 9668, Level 10, State 1: Service Queues analyzed: 3.    
    
 Service Broker Msg 9669, Level 10, State 1: Conversation Endpoints analyzed: 0.    
    
 Service Broker Msg 9674, Level 10, State 1: Conversation Groups analyzed: 0.    
    
 Service Broker Msg 9670, Level 10, State 1: Remote Service Bindings analyzed: 0.    
    
 DBCC results for 'sys.sysrowsetcolumns'.    
    
 There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.    
    
 DBCC results for 'sys.sysrowsets'.    
    
 There are 97 rows in 1 pages for object 'sys.sysrowsets'.    
    
 DBCC results for 'sysallocunits'.    
    
 There are 195 rows in 3 pages for object 'sysallocunits'.    
    
 There are 0 rows in 0 pages for object "sys.sysasymkeys".    
    
 DBCC results for 'sys.syssqlguides'.    
    
 There are 0 rows in 0 pages for object "sys.syssqlguides".    
    
 DBCC results for 'sys.queue_messages_1977058079'.    
    
 There are 0 rows in 0 pages for object "sys.queue_messages_1977058079".    
    
 DBCC results for 'sys.queue_messages_2009058193'.    
    
 There are 0 rows in 0 pages for object "sys.queue_messages_2009058193".    
    
 DBCC results for 'sys.queue_messages_2041058307'.    
    
 There are 0 rows in 0 pages for object "sys.queue_messages_2041058307".    
    
 CHECKDB found 0 allocation errors and 0 consistency errors in database 'model'.    
    
 DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

DBCC CHECKDB retourne le jeu de résultats suivant (message) si NO_INFOMSGS est spécifié :DBCC CHECKDB returns the following result set (message) when NO_INFOMSGS is specified:

 The command(s) completed successfully.

DBCC CHECKDB retourne le jeu de résultats suivant si PHYSICAL_ONLY est spécifié :DBCC CHECKDB returns the following result set when PHYSICAL_ONLY is specified:

 DBCC results for 'model'.    
    
 CHECKDB found 0 allocation errors and 0 consistency errors in database 'master'.  
    
 DBCC execution completed. If DBCC printed error messages, contact your system administrator.

DBCC CHECKDB retourne le jeu de résultats suivant si ESTIMATEONLY est spécifié :DBCC CHECKDB returns the following result set when ESTIMATEONLY is specified.

 Estimated TEMPDB space needed for CHECKALLOC (KB)    
    
 -------------------------------------------------  
    
 13   
    
 (1 row(s) affected)   
    
 Estimated TEMPDB space needed for CHECKTABLES (KB)    
    
 --------------------------------------------------    
    
 57 
    
 (1 row(s) affected)  
    
 DBCC execution completed. If DBCC printed error messages, contact your system administrator.

AutorisationsPermissions

Nécessite l’appartenance au rôle serveur fixe sysadmin ou au rôle de base de données fixe db_owner.Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

ExemplesExamples

R.A. Vérification de la base de données active et d'une autre base de donnéesChecking both the current and another database

L'exemple suivant exécute DBCC CHECKDB pour la base de données actuelle et pour la base de données AdventureWorks2012AdventureWorks2012.The following example executes DBCC CHECKDB for the current database and for the AdventureWorks2012AdventureWorks2012 database.

-- Check the current database.    
DBCC CHECKDB;    
GO    
-- Check the AdventureWorks2012 database without nonclustered indexes.    
DBCC CHECKDB (AdventureWorks2012, NOINDEX);    
GO    

B.B. Vérification de la base de données actuelle et suppression des messages d'informationChecking the current database, suppressing informational messages

L'exemple suivant vérifie la base de données actuelle et supprime tous les messages d'information.The following example checks the current database and suppresses all informational messages.

DBCC CHECKDB WITH NO_INFOMSGS;    
GO    

Voir aussiSee Also

DBCC (Transact-SQL)DBCC (Transact-SQL)
Afficher la taille du fichier partiellement alloué d’un instantané de base de données (Transact-SQL)View the Size of the Sparse File of a Database Snapshot (Transact-SQL)
sp_helpdb (Transact-SQL)sp_helpdb (Transact-SQL)
Tables système (Transact-SQL)System Tables (Transact-SQL)