Summary: vous pouvez utiliser la commande DBCC CHECKDB dans SQL Server pour vérifier et réparer une base de données SQL endommagée. Cet article explique comment utiliser la commande DBCC CHECKDB pour réparer la base de données SQL. Il mentionne également un logiciel spécial de réparation MS SQL que vous pouvez utiliser pour réparer une base de données SQL corrompue en quelques étapes simples et sans perte de données.
Les commandes de la console de base de données (DBCC) sont utilisées pour la gestion et l’administration des bases de données dans le serveur SQL. La commande DBCC CHECKDB est utilisée pour vérifier l’intégrité logique et physique de la base de données SQL. Elle permet d’identifier et de rectifier les problèmes structurels et liés à la corruption de la base de données SQL.
Comment fonctionne la commande DBCC CHECKDB ?
La commande effectue une recherche approfondie dans la base de données et réalise des contrôles d’intégrité et d’autres contrôles structurels. Si l’un de ces contrôles échoue, elle affiche des erreurs de cohérence qui indiquent des problèmes dans la base de données et recommande une option de réparation appropriée. Examinons la syntaxe de la commande DBCC CHECKDB.
DBCC CHECKDB [ ( db_name | db_id | 0 [ , NOINDEX | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ] ) ] [ MIT { [ ALL_ERRORMSGS ] [ , EXTENDED_LOGICAL_CHECKS ] [ , NO_INFOMSGS ] [ , TABLOCK ] [ , ESTIMÉ ] [ , { PHYSICAL_ONLY | DATA_PURITY } ] [ , MAXDOP = nombre_de_processeurs ] } ] Copier le code |
Comprenons maintenant les différentes options utilisées dans la commande DBCC CHECKDB ci-dessus.
- database_name | database_id | 0 : Spécifie le nom ou l’identifiant de la base de données pour laquelle vous devez effectuer des contrôles d’intégrité. Si ‘database_name’ ou ‘id’ n’est pas spécifié et que ‘0’ est spécifié, la base de données actuelle est utilisée par défaut.
- NOINDEX : n’effectue que des vérifications logiques afin de réduire le temps d’exécution global. Les indices non groupés ne sont pas pris en compte dans les vérifications.
- REPAIR_FAST : Cette option n’exécute aucun processus de réparation. Elle permet de conserver la syntaxe pour des raisons de compatibilité descendante.
- REPAIR_REBUILD : permet de réparer la base de données sans perte de données. Il peut être utilisé pour réparer les lignes manquantes dans les index non groupés et pour reconstruire un index.
- REPAIR_ALLOW_DATA_LOSS : cette option tente de rectifier tous les problèmes et erreurs signalés. N’utilisez cette option qu’en dernier recours, car elle peut entraîner une perte de données.
- ALL_ERRORMSGS : Cet argument affiche tous les messages d’erreur pour chaque objet.
- EXTENDED_LOGICAL_CHECKS : utilisez cette option pour effectuer des contrôles supplémentaires.
- NO_INFOMSGS : La sortie DBCC affiche des messages d’information qui ne concernent pas les erreurs de cohérence. Utilisez cette option pour désactiver les messages d’information.
- TABLOCK : utilise des verrous au lieu de l’instantané interne de la base de données pour effectuer des contrôles de cohérence dans la base de données.
- ESTIMATEONLY : Spécifie l’espace mémoire estimé nécessaire à la base de données ‘tempdb’ pour exécuter la commande CHECKDB.
- PHYSICAL_ONLY : Limite les contrôles de cohérence à la structure physique de la page de la base de données et réduit ainsi la durée d’exécution de DBCC CHECKDB pour les grandes bases de données.
- DATA_PURITY : permet de vérifier que la base de données ne contient pas de valeurs de colonnes invalides ou hors limites.
Étapes pour réparer la base de données SQL avec la commande DBCC CHECKDB
Pour exécuter la commande DBCC CHECKDB, assurez-vous que vous disposez des droits d’administrateur appropriés. Ouvrez ensuite SQL Server Management Studio (SSMS) et effectuez les étapes suivantes :
Remarque : Nous utiliserons le nom de la base de données comme Dbtesting. Veillez à remplacer “Dbtesting” par le nom de votre base de données.
Etape n°1 : Mettre la base de données en mode d’urgence
Si l’accès à la base de données n’est pas possible, passez d’abord l’état de la base de données en mode URGENCE. L’administrateur dispose ainsi d’un accès en lecture seule. Pour mettre la base de données en mode URGENCE, exécutez la requête suivante dans SSMS :
ALTER DATABASE [Dbtesting] SET
Étape 2 : Vérifiez que la base de données n’est pas corrompue
Après avoir mis la base de données en mode d’urgence, exécutez la commande suivante pour vérifier l’absence d’erreurs de corruption dans la base de données :
DBCC CHECKDB (Dbtesting)
Si la commande DBCC CHECKDB détecte des erreurs ou des dommages dans la base de données, elle recommande une option de réparation appropriée.
Étape 3 : Mettre la base de données en mode SINGLE_USER
Avant d’utiliser l’option de réparation, vous devez mettre la base de données en mode SINGLE_USER pour empêcher d’autres utilisateurs de modifier les données pendant le processus de réparation. Pour définir la base de données en mode SINGLE_USER, exécutez la requête T-SQL suivante dans SSMS :
ALTER DATABASE Dbtesting SET SINGLE_USER
Étape 4 : Réparation de la base de données
Après avoir mis la base de données en mode SINGLE_USER, exécutez la commande avec l’option REPAIR recommandée par la commande DBCC CHECKDB. Si un message d’erreur s’affiche et recommande REPAIR_REBUILD comme niveau de réparation minimum, exécutez la commande DBCC CHECKDB avec l’option REPAIR_REBUILD comme indiqué ci-dessous :
DBCC CHECKDB (' Dbtesting ', REPAIR_REBUILD)
Code GOCopy
Vous pouvez utiliser cette commande pour remettre la base de données en état sans perdre de données. Elle peut réparer les lignes manquantes dans les index non groupés et aider à rectifier les erreurs de corruption mineures. Toutefois, cette option prend beaucoup de temps.
Vous pouvez également utiliser REPAIR_FAST avec la commande ci-dessous :
DBCC CHECKDB (' Dbtesting ', REPAIR_FAST)
Code GOCopy
Cette option de réparation ne fait que conserver la compatibilité descendante de la syntaxe et n’effectue aucune mesure de réparation.
Si les options de réparation ci-dessus échouent ou si la commande DBCC CHECKDB recommande d’utiliser l’option de réparation REPAIR_ALLOW_DATA_LOSS, exécutez la commande DBCC CHECKDB comme indiqué ci-dessous :
DBCC CHECKDB (N 'Dbtesting', REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS ;
Code GOCopy
L’option de réparation REPAIR_ALLOW_DATA_LOSS permet de réparer toutes les erreurs signalées dans la base de données SQL Server, mais entraîne une perte de données. Microsoft recommande de n’utiliser l’option REPAIR_ALLOW_DATA_LOSS qu’en dernier recours.
Étape 5 : Passage de la base de données en mode MULTI_USER
Après avoir réparé la base de données avec succès, mettez la base de données en mode MULTI_USER en exécutant la commande suivante :
ALTER DATABASE Dbtesting SET
Inconvénients de la commande DBCC CHECKDB
Bien que la commande DBCC CHECKDB puisse résoudre les problèmes de cohérence de la base de données, vous devez être conscient des inconvénients suivants si vous utilisez la commande avec l’option REPAIR_ALLOW_DATA_LOSS :
- Lors de la réparation de la base de données, des lignes ou des pages peuvent être libérées. Les données libérées ne peuvent parfois plus être remises en état.
- Votre base de données peut alors se trouver dans un état d’incohérence logique.
- Il se peut que vous deviez utiliser cette commande plusieurs fois pour corriger toutes les erreurs liées à la base de données SQL. Ce processus prend beaucoup de temps.
- Il ne garantit pas une récupération complète des données.
Une alternative à la commande DBCC CHECKDB
Pour surmonter les inconvénients de la commande DBCC CHEKDB et réparer la base de données SQL endommagée avec une intégrité complète, vous pouvez utiliser un logiciel de réparation MS SQL spécialisé tel que Stellar Repair for MS SQL. Le logiciel répare les bases de données MS SQL gravement endommagées et remet en état tous ses composants. Le logiciel de récupération de données aide à remettre l’accès à la base de données avec un minimum d’effort manuel et de temps.
Caractéristiques importantes :
- Réparation des fichiers de base de données MDF et NDF
- Remet en état tous les composants de la base de données, y compris les tables, les clés, les index, les procédures stockées, etc.
- Permet la récupération des registres de données supprimés
- Remet en état les tables SQL avec la compression PAGE et ROW
- Prise en charge de la récupération sélective des objets de la base de données
- Fournit un aperçu des objets de la base de données récupérables avant l’enregistrement.
- Enregistre la base de données réparée dans une nouvelle base de données ou une base de données active et dans des formats tels que CSV, HTML et XLS.
- Soutien des bases de données SQL Server 2022, 2019, 2017, 2016, 2014, 2012 et versions inférieures.
- Compatible avec les systèmes d’exploitation Windows et Linux
Conclusion
Si votre base de données SQL est endommagée, vous pouvez utiliser la commande DBCC CHECKDB pour la vérifier et la réparer. Nous avons expliqué ci-dessus comment utiliser la commande DBCC CHECKDB pour réparer votre base de données SQL. Cependant, l’utilisation de la commande DBCC CHECKDB avec REPAIR_ALLOW_DATA_LOSS comporte un risque de perte de données. Pour réparer la base de données endommagée sans perte de données, vous pouvez utiliser un logiciel de réparation MS SQL spécialisé comme Stellar Repair for MS SQL. Ce logiciel vous aide à récupérer tous les composants de la base de données SQL, y compris les tables, les registres de table supprimés, les index, les vues, etc. Vous pouvez télécharger le logiciel gratuitement pour tester sa fonctionnalité et son efficacité.