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 :
BACKUP DATABASE [AdventureWorks2019] TO DISK = N’C:\backups\AdventureWorks2019.bak’ WITH NOFORMAT, NOINIT, NAME = N’AdventureWorks2019-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
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 :
ALTER DATABASE Dbtesting SET SINGLE_USER
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) :
DBCC CHECKDB (N ’Dbtesting’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS
GO
Une fois la base de données réparée, rétablissez-la en mode MULTI_USER
en utilisant la commande ci-dessous :
ALTER DATABASE Dbtesting SET MULTI_USER
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