Symptom:

When trying to attach a .MDF database in SQL Server, you see the following error message:

Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

xxx.mdf is not a primary database file. (Microsoft SQL Server, Error: 5171)

where ‘xxx.mdf is name of the MDF file to be attached.

Screenshot of error message:

Screenshot of error "Not A Primary Database File"

Precise Explanation:

The data in MDF file are stored as pages, each page is 8KB. The first page is called the file header page, which contains the most important information about the whole file, such as the file signature, file size, compatibility, etc. The remaining pages also contain the important information, including the page allocation information as well as the actual data.

If the MDF file header page, or other important management pages are damaged or corrupted, and cannot be recognized by Microsoft SQL Server, then SQL Server will think the whole file is not a valid primary database file and report this error.

You can use our product DataNumen SQL Recovery to recover the data from the corrupt MDF file and solve this error.

Sample Files:

Sample corrupt MDF files that will cause the error:

SQL Server version Corrupt MDF file MDF file fixed by DataNumen SQL Recovery
SQL Server 2005 Error1_1.mdf Error1_1_fixed.mdf
SQL Server 2008 R2 Error1_2.mdf Error1_2_fixed.mdf
SQL Server 2012 Error1_3.mdf Error1_3_fixed.mdf
SQL Server 2014 Error1_4.mdf Error1_4_fixed.mdf