Comment résoudre le problème de ‘Base de données ne peut pas être ouverte’ de SQL Server dû à la corruption de MDF ?

Le fichier de base de données principal (MDF) est le fichier de base de données principal dans MS SQL Server qui stocke toutes les données, y compris les vues, les tables, les procédures stockées, les clés étrangères et les clés primaires. Parfois, lors de l’ouverture du fichier MDF, vous pouvez rencontrer un problème où la base de données SQL Server ne peut pas être ouverte et rencontrer une erreur, comme celle donnée ci-dessous :

  • Erreur SQL Server 5171 : MDF n’est pas un fichier de base de données principal
  • Impossible d’ouvrir le fichier xxxxx.mdf. Erreur système d’exploitation 5 : (Accès refusé)”
  • ID d’événement 824 : SQL Server a détecté une erreur d’E/S basée sur la cohérence logique
  • Msg 8114, Niveau 16, État 5, Ligne 2 : Erreur de conversion du type de données varchar en numérique

Ces erreurs se produisent généralement lorsqu’il y a une corruption dans le fichier MDF. Dans cet article, nous expliquerons les raisons possibles de la corruption des fichiers MDF et montrerons comment réparer les fichiers MDF corrompus et résoudre le problème.

Causes de la corruption dans le fichier MDF

Il existe diverses raisons qui peuvent conduire à la corruption du fichier de base de données SQL Server (MDF). Certaines raisons courantes sont données ci-dessous :

Crash de MS SQL Server ou du système

MS SQL Server ou le système peut planter en raison de problèmes avec le système d’exploitation, le matériel ou le logiciel. Si le serveur ou le système plante lors de l’utilisation du fichier MDF, il peut endommager ou corrompre le fichier.

Arrêt brutal du système

Une panne de courant soudaine ou l’arrêt forcé du système alors que le serveur SQL est en cours d’exécution peut corrompre le fichier MDF stocké sur votre système.

Attaques de logiciels malveillants ou de virus

Les logiciels malveillants ou les virus peuvent également endommager les fichiers MDF et les rendre inaccessibles. Cela se produit généralement lorsque votre système ne dispose pas d’un logiciel de protection antivirus ou anti-malware.

Problèmes avec le lecteur de stockage

Des secteurs défectueux sur le lecteur de stockage ou des erreurs du système de fichiers peuvent corrompre les fichiers de base de données SQL. Si le lecteur est endommagé, cela peut également entraîner une corruption des fichiers MDF.

Méthodes pour résoudre le problème « La base de données ne peut pas être ouverte » en raison de la corruption du fichier MDF

Si votre fichier MDF est corrompu, vous pouvez ensuite suivre les méthodes ci-dessous pour réparer et récupérer le fichier MDF corrompu, résolvant ainsi le problème « La base de données ne peut pas être ouverte » dans SQL Server.

Méthode 1 : Restaurer le fichier MDF à partir de la sauvegarde

Si vous avez créé une sauvegarde de votre fichier MDF, vous pouvez restaurer le fichier à partir de la sauvegarde. Mais avant de restaurer, vous devez vérifier si votre sauvegarde est complète et lisible. Pour cela, vous pouvez utiliser la commande RESTORE VERIFY ONLY. Si cette commande affiche un message de succès, vous pouvez alors procéder à la restauration de la sauvegarde. Pour cela, utilisez la commande Transact SQL ci-dessous :

MS SQL

 

Alternativement, vous pouvez utiliser le SQL Server Management Studio (SSMS) pour restaurer la sauvegarde.

Méthode 2 : Utiliser la commande DBCC CHECKDB

Si la sauvegarde n’est pas à jour ou s’il y a un problème lors de la restauration du fichier de sauvegarde, vous pouvez utiliser la commande DBCC CHECKDB pour réparer le fichier MDF corrompu. Pour réparer le fichier de base de données, assurez-vous d’avoir des droits d’administration sur la base de données. Avant de réparer, définissez la base de données en mode utilisateur unique en utilisant la commande ci-dessous :

MS SQL

 

Si vous ne parvenez pas à définir la base de données en mode SINGLE_USER, vérifiez que l’option AUTO_UPDATE_STATISTICS_ASYNC est définie sur OFF

Ensuite, exécutez la commande DBCC CHECKDB comme indiqué ci-dessous pour réparer la base de données (MDF) : 

MS SQL

 

Une fois la base de données réparée, rétablissez-la en mode MULTI_USER en utilisant la commande ci-dessous :

MS SQL

 

Remarque: La commande DBCC CHECKDB peut vous aider à réparer le fichier MDF. Cependant, lors de la réparation du fichier, elle peut désallouer des pages ou des lignes, ce qui peut entraîner une perte de données. 

Méthode 3 : Utiliser un outil professionnel de réparation SQL

La réparation de la base de données SQL en utilisant la commande DBCC CHECKDB avec l’option REPAIR_ALLOW_DATA_LOSS peut entraîner une perte de données. Pour éviter la perte de données, vous pouvez utiliser un puissant logiciel de réparation MS SQL, comme Stellar Repair for MS SQL. Ce logiciel peut réparer les fichiers MDF corrompus et restaurer tous les objets du fichier, tels que les clés primaires, les tables, les déclencheurs, les vues, etc., sans modifier la structure d’origine. Il enregistre les données du fichier réparé dans un nouveau fichier MDF et divers autres formats, tels que CSV, HTML et XLS. Le logiciel prend en charge les fichiers de base de données SQL (MDF et NDF) créés sur des systèmes Windows et Linux. 

Pour Conclure

Le problème « La base de données ne peut pas être ouverte » dans MS SQL Server peut survenir en raison d’une corruption dans le fichier MDF. Pour résoudre ce problème, le moyen le plus simple est de restaurer le fichier MDF à partir de la dernière sauvegarde. Si le fichier de sauvegarde est obsolète ou ne fonctionne pas, vous pouvez utiliser la commande DBCC CHECKDB pour réparer le fichier MDF corrompu. Si la commande DBCC CHECKDB échoue à réparer la base de données, utilisez un outil de réparation SQL puissant, tel que Stellar Repair for MS SQL. Il peut réparer les fichiers MDF corrompus et restaurer toutes les données dans un nouveau fichier MDF en toute intégrité. Vous pouvez installer la version gratuite de Stellar Repair for MS SQL pour analyser le fichier MDF corrompu et prévisualiser les données récupérables.

Source:
https://dzone.com/articles/resolve-sql-server-database-cannot-be-opened-mdf-issue