Summary: ce blog décrit les raisons possibles de la corruption du fichier MDF de la base de données SQL Server. Il décrit également le processus manuel de réparation d'un fichier MDF de base de données SQL Server corrompu, les défis associés au processus manuel et la meilleure alternative pour surmonter ces défis.
Le MDF est le fichier de données principal de la base de données SQL Server où toutes les données sont stockées, y compris les composants tels que les index, les index XML, les vues, les tables, les déclencheurs et les procédures stockées. Il est également appelé fichier de base de données principal ou maître du serveur SQL. Chaque base de données SQL Server contient au moins un fichier MDF.
Le fichier MDF peut être décrit comme l’élément principal de gestion de la base de données SQL.
Diverses raisons entraînent la corruption de votre fichier de base de données SQL Server (.mdf). Lorsque cela se produit, la base de données devient inaccessible et peut entraîner une perte de données si le fichier n’est pas réparé à temps.
Avant d’aborder les différentes solutions de réparation d’un fichier MDF, examinons les raisons les plus courantes qui peuvent entraîner la corruption d’un fichier de base de données SQL.
Solution rapide : Si vous ne voulez pas risquer la perte de données, utilisez Stellar Repair for MS SQL pour réparer le fichier MDF corrompu et récupérer tous les objets sans endommager la base de données. Le logiciel est compatible avec MS SQL Server 2019, 2017, 2016, 2014, 2012, 2008, 2008 R2 et les versions antérieures. |
Causes possibles d’endommagement du fichier MDF
Vous trouverez ci-dessous quelques raisons courantes qui peuvent entraîner la corruption d’un fichier MDF dans le serveur SQL :
- Coupure d’électricité soudaine
- Bugs dans le serveur lui-même
- Système d’exploitation défectueux
- Arrêt inattendu (brusque) du système
- Problèmes matériels, épidémies de virus, etc.
- Fichier enregistré sur un périphérique de stockage externe endommagé
Comment réparer les fichiers MDF ?
Microsoft SQL Server fournit une commande de console de base de données intégrée CHECKDB (DBCC CHECKDB) pour tester l’intégrité physique et logique des objets db en effectuant les opérations suivantes dans l’ordre :
- Exécutez la commande DBCC CHECKALLOC dans la base de données.
- Exécutez la commande DBCC CHECKCATALOG dans la base de données.
- Exécutez DBCC CHECKTABLE pour chaque vue et table de la base de données.
- Authentification du contenu de chaque vue indexée disponible dans la base de données.
- Authentification de la constance des liens entre les métadonnées des tables, les répertoires du système de fichiers et les fichiers lors du stockage de données VARBINAIRE (max) avec FILESTREAM dans le système de fichiers.
- Authentification des données du Service Broker dans la base de données.
Remarque : pour plus d’informations, reportez-vous à la description des commandes DBCC ci-dessus. |
DBCC CHECKDB vérifie la cohérence des pages db et d’autres contrôles structurels. Il signale ensuite les erreurs éventuelles.
Si DBCC CHECKDB signale des erreurs de cohérence dans la base de données, essayez de remettre la base de données à partir d’une copie de sauvegarde dont la qualité est connue. Toutefois, si la copie de sauvegarde n’est pas disponible ou n’est pas la plus récente, CHECKDB propose plusieurs options de réparation pour réparer un fichier MDF endommagé dans SQL Server.
Les options de réparation sont les suivantes :
- REPAIR_FAST – La syntaxe est maintenue uniquement pour des raisons de compatibilité ascendante ; elle n’aide pas à effectuer des actions de réparation. La syntaxe de cette option de réparation est la suivante :
DBCC CHECKDB (‘Nom-DB’, REPAIR_FAST)
- REPAIR_REBUILD – Cette option de réparation effectue une opération de réparation sans risque de perte de données. Cela vous permet d’effectuer des réparations rapides, telles que la réparation des lignes manquantes dans les index non groupés, et même des réparations longues, telles que la reconstruction des index. La syntaxe est la suivante :
DBCC CHECKDB (‘Nom-DB’, REPAIR_REBUILD)
Remarque : cette fonction (REPAIR_REBUILD) ne corrige pas les erreurs qui contiennent des données FILESTREAM.
- REPAIR_ALLOW_DATA_LOSS – Microsoft recommande d’utiliser cette option de réparation en dernier recours pour corriger toutes les erreurs. En effet, même si l’option répare des erreurs telles que la libération d’une page ou d’une ligne, etc., elle peut entraîner une perte de données. La syntaxe est la suivante :
DBCC CHECKDB (‘Nom BD’, REPAIR_ALLOW_DATA_LOSS)
Remarque : à la place de DBCC CHECKDB, utilisez l’option ‘Repair_Allow_Data_Loss‘ pour réparer le fichier MDF endommagé sans perte de données. |
Ce qu’il faut prendre en compte lors de l’utilisation des options de réparation de DBCC CHECKDB
Lorsque vous utilisez les options de réparation DBCC CHECKDB, veillez à respecter les conditions suivantes :
- La première condition, et la plus importante, est que la base de données concernée soit en mode mono-utilisateur afin d’exécuter l’une des trois commandes de réparation. Si un utilisateur ne met pas la base de données en mode mono-utilisateur, le message d’erreur suivant apparaît :
“L’instruction de réparation n’est pas traitée. La base de données doit être en mode mono-utilisateur.
L’exécution de DBCC est terminée. Si DBCC a émis des messages d’erreur, contactez votre administrateur système.”
Vous pouvez configurer la base de données SQL en mode mono-utilisateur à l’aide de la commande suivante :
ALTER DATABASE Nom de la base de données SET SINGLE_USER WITH ROLLBACK IMMEDIATE
- Deuxièmement, vous devez utiliser la syntaxe pour exécuter correctement les commandes de réparation DBCC CHECKDB. Ce n’est qu’à cette condition que les anomalies seront corrigées et que vous obtiendrez un fichier de base de données sain.
- Les instructions de réparation DBCC ne sont pas valables pour les tables à mémoire optimisée. Dans de tels cas, c’est-à-dire lorsque des problèmes d’intégrité surviennent dans une table à mémoire optimisée, vous devez remettre la sauvegarde en état pour avoir accès aux données du fichier db, à condition que le fichier de sauvegarde ne soit pas corrompu.
L’outil de réparation DBCC CHECKDB a échoué ! Que faire maintenant ?
Si la fonction intégrée DBCC CHECKDB ne peut pas réparer le fichier db SQL, vous pouvez ensuite exécuter un logiciel de réparation SQL spécialisé comme Stellar Repair for MS SQL. Ce logiciel vous aidera à réparer le fichier MDF et à extraire les données qui y sont stockées sans avoir à investir beaucoup de temps et d’efforts dans l’écriture d’un code complexe.
Ce logiciel de réparation SQL permet de vérifier la présence d’entrées incorrectes dans la base de données, de corriger les schémas de bits et de livrer la base de données dans un état cohérent.
Principales caractéristiques du logiciel Stellar Repair for MS SQL
- Répare les fichiers MDF et NDF endommagés
- Remet en état tous les composants de la base de données, tels que les tables, les clés, les déclencheurs, les procédures stockées, etc.
- Soutien de la récupération des registres supprimés de la base de données SQL Server
- Affiche un aperçu des objets de la base de données récupérables
- Fournit plusieurs options d’enregistrement des fichiers SQL DB réparés aux formats MS SQL, XLS, CSV et HTML.
Conclusion
Lorsqu’un fichier MDF est corrompu, la seule préoccupation des administrateurs de systèmes ou de bases de données (DBA) est de s’assurer que la base de données est accessible et que toutes les données sont remises dans leur état d’origine, intact.
Vous pouvez facilement remettre le fichier de base de données à partir de la dernière copie de sauvegarde, mais si celle-ci est indisponible ou corrompue, l’exécution de DBCC CHECKDB avec les options de réparation peut vous aider. Si aucune des options de réparation ne fonctionne pour vous ou si vous ne voulez pas risquer de perdre des données en raison de l’option REPAIR_ALLOW_Data_LOSS, l’utilisation du logiciel Stellar Repair for MS SQL est la meilleure façon de réparer un fichier MDF de base de données SQL Server corrompu. Il peut aider à réparer les fichiers de base de données (.mdf et .ndf) lorsque la réparation DBCC CHECKDB échoue.