Symptôme:

Lorsque vous essayez de joindre une base de données .MDF dans SQL Server, le message d'erreur suivant s'affiche :

Échec de la récupération des données pour cette demande. (Microsoft.SqlServer.Management.Sdk.Sfc)

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

xxx.mdf n'est pas un fichier de base de données primaire. (Microsoft SQL Server, Erreur : 5171)

où 'xxx.mdf est le nom du fichier MDF à joindre.

Capture d'écran du message d'erreur :

Capture d'écran de l'erreur "Pas un fichier de base de données principal"

Explication précise :

Les données du fichier MDF sont stockées sous forme de pages, chaque page fait 8 Ko. La première page est appelée la page d'en-tête du fichier, qui contient le most des informations importantes sur l'ensemble du fichier, telles que la signature du fichier, la taille du fichier, la compatibilité, etc. Les pages restantes contiennent également les informations importantes, y compris les informations d'allocation de page ainsi que les données réelles.

Si la page d'en-tête du fichier MDF ou d'autres pages de gestion importantes sont endommagées ou corrompues et ne peuvent pas être reconnues par Microsoft SQL Server, puis SQL Server pensera que le fichier entier n'est pas un fichier de base de données primaire valide et signalera cette erreur.

Vous pouvez utiliser notre produit DataNumen SQL Recovery pour récupérer les données du fichier MDF corrompu et résoudre cette erreur.

Exemples de fichiers :

Exemples de fichiers MDF corrompus qui provoqueront l'erreur :

SQL Server version Fichier MDF corrompu Fichier MDF fixé par DataNumen SQL Recovery
SQL Server 2005 Erreur1_1.mdf Erreur1_1_fixed.mdf
SQL Server 2008 R2 Erreur1_2.mdf Erreur1_2_fixed.mdf
SQL Server 2012 Erreur1_3.mdf Erreur1_3_fixed.mdf
SQL Server 2014 Erreur1_4.mdf Erreur1_4_fixed.mdf