DBCC CHECKFILEGROUP (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
Vérifie l'allocation et l'intégrité de la structure de toutes les tables et vues indexées dans le groupe de fichiers spécifié de la base de données active.
Conventions de la syntaxe Transact-SQL
Syntaxe
DBCC CHECKFILEGROUP
[
[ ( { filegroup_name | filegroup_id | 0 }
[ , NOINDEX ]
) ]
[ WITH
{
[ ALL_ERRORMSGS | NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
[ , PHYSICAL_ONLY ]
[ , MAXDOP = number_of_processors ]
}
]
]
Arguments
filegroup_name
Nom du groupe de fichiers dans la base de données active, pour lequel l’allocation de table et l’intégrité de la structure doivent être vérifiées. Si vous ne définissez pas cet argument ou si vous lui attribuez la valeur 0, le groupe de fichiers primaire est utilisé par défaut. Les noms de groupe de fichiers doivent suivre les règles applicables aux identificateurs.
filegroup_name ne peut pas être un groupe de fichiers FILESTREAM.
filegroup_id
Numéro d’identification (ID) du groupe de fichiers dans la base de données active, pour lequel l’allocation de table et l’intégrité de la structure doivent être vérifiées.
NOINDEX
Spécifie de ne pas faire de vérifications intensives des index non cluster pour les tables utilisateur. Cela diminue la durée d'exécution globale. NOINDEX
n’affecte pas les tables système, car DBCC CHECKFILEGROUP
vérifie toujours tous les index des tables système.
ALL_ERRORMSGS
Affiche un nombre illimité d'erreurs par objet. Tous les messages d'erreur sont affichés par défaut. La spécification ou non de cette option n'a aucun effet.
NO_INFOMSGS
Supprime tous les messages d'information.
TABLOCK
Fait que DBCC CHECKFILEGROUP
obtient des verrouillages au lieu d’utiliser un instantané de base de données interne.
ESTIMATE ONLY
Affiche une estimation de la quantité d’espace de tempdb
nécessaire pour exécuter DBCC CHECKFILEGROUP
avec toutes les autres options spécifiées.
PHYSICAL_ONLY
Limite la vérification à l'intégrité de la structure physique de la page, des en-têtes d'enregistrement et de la structure physique des arbres B (B-trees). Conçue pour effectuer une vérification à faible charge de la cohérence physique du groupe de fichiers, cette vérification peut également détecter les pages endommagées et les erreurs matérielles courantes susceptibles de compromettre les données. Une exécution complète de DBCC CHECKFILEGROUP
peut prendre beaucoup plus de temps que dans les versions antérieures. Ce comportement se produit pour les raisons suivantes :
- Les vérifications logiques sont plus complètes.
- Certaines des structures sous-jacentes à vérifier sont plus complexes.
- De nombreuses vérifications nouvelles ont été introduites pour inclure les nouvelles fonctionnalités.
Remarque
De manière générale, la documentation SQL Server utilise le terme B-tree en référence aux index. Dans les index rowstore, le moteur de base de données implémente une structure B+. Cela ne s’applique pas aux index columnstore ou aux index sur les tables à mémoire optimisée. Pour plus d’informations, consultez le Guide de conception et d’architecture d’index SQL Server et Azure SQL.
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 CHECKFILEGROUP
sur les grands groupes de fichiers, elle est recommandée pour une utilisation fréquente sur des systèmes de production. Nous vous recommandons d’effectuer régulièrement une exécution complète de DBCC CHECKFILEGROUP
. La fréquence de ces exécutions dépend de facteurs spécifiques à chaque entreprise et à chaque environnement de production. PHYSICAL_ONLY
implique toujours NO_INFOMSGS
et n’est autorisé avec aucune des options de réparation.
Notes
La spécification de l’option PHYSICAL_ONLY
fait que DBCC CHECKFILEGROUP
va ignorer toutes les vérifications des données FILESTREAM.
MAXDOP
S’applique à : SQL Server 2014 Service Pack 2 et ultérieur
Remplace l’option de configuration max degree of parallelism de sp_configure
pour l’instruction. MAXDOP
peut être supérieur à la valeur configurée avec sp_configure
. Si MAXDOP
dépasse la valeur configurée avec Resource Governor, le moteur de base de données utilise la valeur MAXDOP
de Resource Governor, décrite dans ALTER WORKLOAD GROUP (Transact-SQL). Toutes les règles sémantiques utilisées avec l’option de configuration du degré maximal de parallélisme sont applicables quand vous utilisez l’indicateur de requête MAXDOP
. Pour plus d’informations, consultez Configurer l’option de configuration du serveur max degree of parallelism.
Attention
Si MAXDOP
est défini sur zéro, le serveur choisit le degré maximal de parallélisme.
Notes
DBCC CHECKFILEGROUP
et DBCC CHECKDB
sont des commandes DBCC similaires. La différence principale est que la commande DBCC CHECKFILEGROUP
est limitée au groupe de fichiers unique spécifié et aux tables requises.
DBCC CHECKFILEGROUP
effectue les commandes suivantes :
- DBCC CHECKALLOC du groupe de fichiers ;
- DBCC CHECKTABLE de chaque table et vue indexée dans le groupe de fichiers.
L’exécution de DBCC CHECKALLOC
ou de DBCC CHECKTABLE
séparément de DBCC CHECKFILEGROUP
n’est pas obligatoire.
Instantané de base de données interne
DBCC CHECKFILEGROUP
utilise un instantané de base de données interne pour fournir la cohérence transactionnelle nécessaire pour effectuer ces vérifications. Pour plus d’informations, consultez Voir la taille du fichier partiellement alloué d’un instantané de base de données (Transact-SQL) et la section Utilisation d’un instantané de base de données interne DBCC de DBCC (Transact-SQL).
Si un instantané ne peut pas être créé ou si l’option TABLOCK
est spécifiée, DBCC CHECKFILEGROUP
acquiert des verrous pour obtenir la cohérence requise. 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. TABLOCK
accélère l’exécution de DBCC CHECKFILEGROUP
sur une base de données dont la charge est importante, mais diminue la concurrence disponible sur la base de données pendant l’exécution de DBCC CHECKFILEGROUP
.
Notes
L’exécution de DBCC CHECKFILEGROUP
sur tempdb
n’effectue aucune vérification d’allocation et doit acquérir des verrous de table partagés pour vérifier les tables. La raison en est que, pour des raisons de performances, les instantanés de base de données ne sont pas disponibles sur tempdb
. Cela signifie que la cohérence transactionnelle requise ne peut pas être obtenue.
Vérifier des objets en parallèle
Par défaut, DBCC CHECKFILEGROUP
effectue une vérification parallèle des objets. Le degré de parallélisme est automatiquement défini par le processeur de requêtes. Le degré maximum de parallélisme est configuré de la même manière que les requêtes parallèles. Pour limiter le nombre maximal de processeurs disponibles pour la vérification DBCC, utilisez sp_configure. Pour plus d’informations, consultez Configurer l’option de configuration du serveur max degree of parallelism.
La vérification parallèle peut être désactivée avec l’indicateur de trace 2528. Pour plus d’informations, consultez Indicateurs de trace (Transact-SQL).
Index non cluster sur des groupes de fichiers distincts
Si un index non cluster du groupe de fichiers spécifié est associé à une table d’un autre groupe de fichiers, l’index n’est pas vérifié, car la table de base n’est pas disponible pour être validée.
Si une table du groupe de fichiers spécifié a un index non cluster dans un autre groupe de fichiers, l’index non cluster n’est pas vérifié pour les raisons suivantes :
- La structure de la table de base n’est pas dépendante de la structure d’un index non cluster. Les index non cluster n’ont pas à être analysés pour permettre la validation de la table de base.
- La commande
DBCC CHECKFILEGROUP
vérifie les objets seulement dans le groupe de fichiers spécifié.
Un index cluster et une table ne peuvent pas se trouver dans des groupes de fichiers différents : les considérations précédentes s’appliquent donc seulement aux index non cluster.
Tables partitionnées dans des groupes de fichiers distincts
Quand une table partitionnée se trouve sur plusieurs groupes de fichiers, DBCC CHECKFILEGROUP
vérifie les ensembles de lignes de partition présents sur le groupe de fichiers spécifiés et ignore les ensembles de lignes dans les autres groupes de fichiers. Le message d’information 2594 indique les partitions qui n’ont pas été vérifiées. Les index non cluster qui ne figurent pas dans le groupe de fichiers spécifié ne sont pas vérifiés.
Comprendre les messages d’erreur de DBCC
Une fois la commande DBCC CHECKFILEGROUP
terminée, un message est écrit dans le journal des erreurs SQL Server. 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. 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 et précise une valeur d’état ainsi que la durée d’exécution de la commande. Le tableau suivant répertorie et décrit les valeurs d'état pouvant être incluses dans le message.
State | Description |
---|---|
0 | Erreur numéro 8930 générée. Ceci indique une corruption des métadonnées qui a provoqué l'arrêt de la commande DBCC. |
1 | Erreur numéro 8967 générée. Une erreur DBCC interne s'est produite. |
2 | Une erreur s'est produite lors de la réparation de la base de données en mode urgence. |
3 | Ceci indique une corruption des métadonnées qui a provoqué l'arrêt de la commande DBCC. |
4 | Une assertion ou une violation d'accès a été détectée. |
5 | Une erreur inconnue s'est produite et a arrêté la commande DBCC. |
Rapport d’erreurs
Un fichier minidump (SQLDUMP<nnnn>.txt
) est créé dans le répertoire LOG
de SQL Server chaque fois que DBCC CHECKFILEGROUP
détecte une erreur d’altération. 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 Server, ce fichier est automatiquement transféré à Microsoft. Les données collectées sont utilisées pour améliorer les fonctionnalités SQL Server.
Le fichier de vidage contient les résultats de la commande DBCC CHECKFILEGROUP
ainsi que des informations de diagnostic supplémentaires. Ce fichier contient des listes de contrôle d'accès discrétionnaire (DACL, Discretionary Access Control Lists) avec accès restreint. L’accès est limité au compte de service SQL Server et aux membres du rôle sysadmin. Par défaut, le rôle sysadmin contient tous les membres du groupe Windows BUILTIN\Administrators et du groupe Administrateurs local. La commande DBCC n’échoue pas en cas d’échec du processus de collecte des données.
Résolution des erreurs
Si des erreurs sont signalées par DBCC CHECKFILEGROUP
, il est recommandé de restaurer la base de données à partir de la sauvegarde de cette dernière. Les options de réparation ne peuvent pas être spécifiées sur DBCC CHECKFILEGROUP
.
Si aucune sauvegarde n’existe, l’exécution de DBCC CHECKDB
avec une option de réparation spécifiée corrige les erreurs signalées. L'option de réparation à utiliser est spécifiée à la fin de la liste des erreurs signalées. La correction des erreurs à l'aide de l'option REPAIR_ALLOW_DATA_LOSS peut nécessiter la suppression de certaines pages et, par conséquent, de certaines données.
Jeux de résultats
DBCC CHECKFILEGROUP
retourne le jeu de résultats suivant (les valeurs peuvent varier) :
- Sauf si
ESTIMATEONLY
ouNO_INFOMSGS
est spécifié. - Pour la base de données active, si aucune base de données n’est spécifiée, que des options soient ou non définies (excepté
NOINDEX
).
DBCC results for 'master'.
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 2340 rows in 16 pages for object 'spt_values'.
DBCC results for 'MSreplication_options'.
There are 2 rows in 1 pages for object 'MSreplication_options'.
CHECKFILEGROUP found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Si NO_INFOMSGS
est spécifié, DBCC CHECKFILEGROUP
retourne :
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Si ESTIMATEONLY
est spécifié, DBCC CHECKFILEGROUP
retourne (les valeurs peuvent varier) :
Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
15
(1 row(s) affected)
Estimated TEMPDB space needed for CHECKTABLES (KB)
--------------------------------------------------
207
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Autorisations
Nécessite l’appartenance au rôle de serveur fixe sysadmin ou au rôle de base de données fixe db_owner .
Exemples
R. Vérifier le groupe de fichiers PRIMARY de la base de données
L'exemple suivant vérifie le groupe de fichiers primaire de la base de données active.
DBCC CHECKFILEGROUP;
GO
B. Vérifier le groupe de fichiers PRIMARY de la base de données AdventureWorks sans index non cluster
L’exemple suivant vérifie le groupe de fichiers principal de la base de données AdventureWorks2022
(à l’exception des index non-cluster) en spécifiant le numéro d’identification du groupe de fichiers principal et NOINDEX
.
USE AdventureWorks2022;
GO
DBCC CHECKFILEGROUP (1, NOINDEX);
GO
C. Vérifier le groupe de fichiers PRIMARY avec des options
L'exemple suivant vérifie le groupe de fichiers primaire de la base de données master
et spécifie l'option ESTIMATEONLY
.
USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;