Comment corriger l'erreur « database.mdf n'est pas un fichier de base de données principal (erreur SQL Server : 5171) » ?


Selon la cause, il existe plusieurs solutions pour corriger le problème lié au fait que le fichier MDF n'est pas la base de données principale dans SQL Server. Tout d'abord, vérifiez le fichier de base de données principal et les fichiers journaux associés que vous souhaitez ouvrir ou ajouter. Ensuite, assurez-vous de joindre le fichier à l'aide d'une version identique ou supérieure de SQL Server. Si le fichier journal des transactions est corrompu, utilisez la commande REBUILD LOG pour le reconstruire. Si le fichier MDF lui-même est corrompu, réparez-le à l'aide d'un outil de réparation SQL professionnel. Dans cet article, nous expliquerons en détail ces méthodes pour corriger l'erreur SQL 5171.

Qu'est-ce que l'erreur SQL 5171 ?

L'erreur SQL 5171 peut survenir lorsque vous ajoutez un fichier MDF/fichier de sauvegarde (.bak) à votre instance SQL Server. Elle se produit généralement lorsque le serveur ne parvient pas à lire le fichier MDF ou son fichier journal des transactions en raison d'une corruption. L'erreur peut survenir dans les environnements de mise en miroir des données et de disponibilité Always On. Elle provoque une erreur de synchronisation entre les répliques et empêche les répliques secondaires de se connecter ou de remettre la base de données.

Pour mieux comprendre ce phénomène, je vais tenter de reproduire cette erreur.

Je dispose d'un fichier MDF corrompu nommé AdventureWorksDW_Data.mdf et je vais tenter de le joindre à l'aide de l'interface utilisateur graphique de Microsoft SQL Server Management Studio.

1_Microsoft SQL Server Management Studio

TITRE : Microsoft SQL Server Management Studio

------------------------------

Les données pour cette requête n'ont pas pu être récupérées. (Microsoft.SqlServer.Management.Sdk.Sfc)

Pour obtenir de l'aide, veuillez cliquer sur : https://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&LinkId=20476

------------------------------

INFORMATIONS SUPPLÉMENTAIRES :

Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

------------------------------

C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Corrupt\AdventureWorksDW_Data.mdf n'est pas un fichier de base de données principal. (Microsoft SQL Server, erreur : 5171)

Pour obtenir de l'aide, veuillez cliquer sur : https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-5171-database-engine-error

------------------------------

BOUTONS :

OK

------------------------------

Copier le code

Comme vous pouvez le constater, le processus de pièce jointe a échoué avec l'erreur 5171.

Lorsque j'ai cliqué sur « Afficher les détails », la gravité, le statut et d'autres informations concernant l'erreur ont été affichés, ce qui peut être utile pour le dépannage.

2_Advanced Information

Erreur SQL Server 5171 – Causes

Toutes les données du fichier MDF sont stockées dans des pages de 8 Ko. Chaque page contient un en-tête avec des informations système importantes, tandis que les pages restantes contiennent les données réelles. Si la page d'en-tête ou d'autres pages ne sont pas reconnues par le serveur, le fichier MDF est considéré comme une base de données principale non valide, ce qui entraîne l'erreur 5171. L'erreur peut être déclenchée par diverses autres causes et facteurs. Les raisons courantes sont les suivantes :

  • Le fichier MDF est endommagé ou corrompu.
  • Vous essayez d'ouvrir/de joindre le fichier MDF sans le fichier LDF.
  • Problèmes matériels sur le système hébergeant le fichier de base de données (MDF).
  • Le fichier MDF n'est pas compatible avec votre version de MS SQL Server.
  • Le format du fichier que vous essayez d'ouvrir est incorrect.
  • Entrées de registre non valides.

Signification de l'erreur SQL Server « MDF n'est pas un fichier de base de données principal » – Effets

Si l'erreur 5171 se produit, les problèmes suivants peuvent survenir :

  • Base de données indisponible
  • Augmentation du temps d'indisponibilité
  • Erreur lors de la connexion
  • Erreur de synchronisation (lorsque la base de données est connectée en mode de disponibilité Always On)
  • Erreur lors de la configuration de la mise en miroir des données

Comment résoudre l'erreur SQL 5171 – MDF n'est pas un fichier de base de données principal ?

Pour résoudre cette erreur, veuillez suivre les meilleures pratiques répertoriées ci-dessous.

 Méthode 1 – Vérifiez le fichier MDF que vous souhaitez attacher

Si vous essayez de joindre un fichier MDF incorrect ou incompatible, vous pouvez rencontrer l'erreur SQL Server 5171 – MDF n'est pas un fichier de base de données principal. Avant d'ouvrir la base de données dans votre instance de serveur actuelle, vérifiez-la et assurez-vous que

  • vous n'essayez pas de joindre un fichier secondaire ou un fichier de sauvegarde incomplet.
  • Vérifiez l'extension du fichier. Elle doit être .MDF.
  • Vous utilisez le chemin d'accès correct au fichier.
  • Assurez-vous que vous disposez de toutes les autorisations pour le fichier MDF que vous souhaitez ouvrir.

Méthode 2 – Vérifiez la version de SQL Server

L'une des principales causes de l'erreur 5171 est une version de SQL Server incompatible. Prenons un exemple pour illustrer cela. Si vous essayez de joindre un fichier MDF créé dans une version supérieure du serveur, telle que SQL Server 2019, à une version antérieure (SQL Server 2014), cette erreur peut se produire. Vous pouvez exécuter la commande suivante pour vérifier la version actuelle de votre SQL Server.

SELECT @@VERSION;Copier le code

Si les versions sont incompatibles, vous pouvez essayer d'utiliser la commande sp_attach_db. Cette commande permet de contourner les problèmes de registre interne qui surviennent lors des mises à niveau. Dans certains cas, cela peut s'avérer utile dans cette situation. Voici la syntaxe :

sp_attach_db

    [ @dbname = ] N'dbname'

    , [ { @filename1 ... @filename16 } = ] { N'*filename1*' ... N'*filename16*' }

[ ; ]

Copier le code

Méthode 3 – Recréer le fichier journal

L'erreur « MDF n'est pas un fichier de base de données principal » peut se produire lors de la connexion à la base de données si le serveur ne parvient pas à lire le fichier LDF associé au fichier MDF. Cela se produit généralement lorsque le fichier journal des transactions est manquant ou endommagé. Dans ce cas, vous pouvez utiliser la commande ATTACH_REBUILD_LOG pour recréer le fichier journal. Pour utiliser cette commande :

CREATE DATABASE testdb ON

(FILENAME = 'C:\Program Files\Microsoft SQL Server..\MSSQL\DATA\testdb.mdf')

Pour ATTACH_REBUILD_LOG

GO

Copier le code

Cette commande crée un nouveau fichier journal. Vous pouvez également essayer d'autres méthodes pour attacher une base de données SQL sans fichier journal des transactions. 

Méthode 4 – Créer une nouvelle base de données et remplacer la base de données affectée

Vous pouvez également essayer de forcer SQL Server à reconnaître le chemin d'accès au fichier MDF et ses métadonnées afin de corriger l'erreur 5171. Pour ce faire, vous devez d'abord créer une nouvelle base de données vide avec le même nom et la même structure. Dans mon cas, par exemple, le nom de la base de données est AdventureWorksDW_Data.mdf. Remplacez ensuite le fichier MDF par le fichier endommagé. Voici comment procéder :

  • Créez une nouvelle base de données en exécutant la commande suivante :

CREATE DATABASE AdventureWorksDW_Data;Copier le code

3_Create a new database

  • Cela créera un nouveau fichier MDF et LDF portant le même nom que le fichier problématique dans le répertoire de données par défaut.
  • Veuillez maintenant arrêter votre instance SQL Server. Cliquez avec le bouton droit sur « Serveur » sous « Explorateur d'objets » et sélectionnez « Arrêter ».

5_encounter backup restore errors

  • Veuillez maintenant accéder au dossier de données de la base de données, qui est le même que le dossier par défaut.
  • Veuillez ensuite copier votre fichier de base de données endommagé à cet emplacement.
  • Veuillez redémarrer le service SQL Server, puis ajoutez les fichiers MDF et LDF.

Méthode 5 – Remettre et réparer le fichier MDF

Si vous ne parvenez pas à attacher la base de données à SQL Server en raison de la corruption du fichier MDF, vous pouvez remettre la base de données à partir de la sauvegarde. Cependant, pour remettre le fichier de sauvegarde, celui-ci doit être complet et accessible. Pour vérifier cela, vous pouvez exécuter la commande « RESTORE VERIFYONLY ».

REMETTRE VERIFYONLY

FROM DISK = 'C:\Users\monika.dadool.STELLARINFO\Downloads\OCT.BAK';

Copier le code

Si la sauvegarde est lisible, vous pouvez suivre ce blog pour remettre la base de données à partir du fichier .bak étape par étape.

Si la sauvegarde est corrompue, des erreurs peuvent se produire lorsque l’on remet la sauvegarde.

6_encounter backup restore errors

Dans ce cas, vous pouvez réparer le fichier MDF à l'aide de la commande DBCC CHECKDB. Cependant, pour utiliser cette commande, le fichier doit déjà être attaché/en ligne. Dans les situations où le fichier MDF n'est pas attaché, Stellar® Repair for MS SQL entre en jeu. Cet outil de réparation de base SQL vous permet de réparer et de remettre des fichiers MDF dans n'importe quel état et de n'importe quelle taille.

Il peut récupérer des index, des procédures stockées, des tables, des déclencheurs et d'autres objets avec une précision absolue. Il enregistre également les données récupérées dans une nouvelle base de données, une base de données active ou dans divers formats de fichiers. L'outil peut vous aider à corriger les erreurs de connexion et d'incohérence dans la base de données SQL, y compris l'erreur sous-jacente, avec une intégrité totale.

Pour savoir comment utiliser l'outil de récupération de données Stellar® SQL pour réparer les fichiers MDF, veuillez visionner cette vidéo.

Conclusion

Si SQL Server ne reconnaît pas le fichier MDF comme fichier de base de données principal, l'erreur 5171 de SQL Server peut se produire : MDF n'est pas un fichier de base de données principal. Vous pouvez suivre les méthodes décrites dans cet article pour corriger l'erreur. Si la corruption du fichier MDF ou de son en-tête est à l'origine de ce problème, l'utilisation de Stellar® Repair for MS SQL est la meilleure option. Il peut réparer rapidement les fichiers MDF et remettre tous les objets avec une intégrité totale.



Was this article helpful?
FAQs
Vous pouvez rencontrer l'erreur 5171 lors de la configuration d'une base de données en miroir lorsque la base de données principale ne parvient pas à se mettre en ligne. Cette erreur survient lorsque le fichier MDF de la base de données principale est corrompu.
Non. La commande DBCC CHECKDB ne peut être utilisée que sur des bases de données qui sont attachées.
Oui, vous pouvez rattacher le fichier MDF à l'aide de la commande sp_attach_db pour résoudre l'erreur 5171. Cependant, dans SQL Server 2016 et les versions ultérieures, la meilleure méthode pour effectuer cette tâche consiste à utiliser la commande CREATE DATABASE … FOR ATTACH. Si le fichier MDF est corrompu, des outils tels que Stellar Repair for MSSQL peuvent être utilisés pour réparer et récupérer la base de données.
À propos de l'auteur
author image
Himanshu Shakya

Himanshu is a Tech Enthusiast & Blogger at Stellar and having knowledge of Japanese Language. And apart from this in his spare time he likes playing Chess.

Table des matières

POURQUOI STELLAR® EST LE LEADER MONDIAL

Pourquoi choisir Stellar?
  • 0M+

    CLIENTS

  • 0+

    Des années d'excellence

  • 0+

    INGÉNIEURS R&D

  • 0+

    PAYS

  • 0+

    TÉMOIGNAGES

  • 0+

    RÉCOMPENSES REÇUES

BitRaser With 30 Years of Excellence
TECHNOLOGIE À LAQUELLE VOUS POUVEZ FAIRE CONFIANCE
Experts en soins des données depuis 1993
google-trust
×