症状:

尝试将 .MDF 数据库附加到 SQL Server,您会看到以下错误消息:

无法为此请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)

执行Transact-SQL语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo)

xxx.mdf 不是主数据库文件。 (微软 SQL Server, 错误: 5171)

其中 'xxx.mdf 是要附加的 MDF 文件的名称。

报错信息截图:

错误“不是主数据库文件”的屏幕截图

准确的解释:

MDF文件中的数据以页为单位存储,每页8KB。 第一页称为文件头页,其中包含 most 有关整个文件的重要信息,如文件签名、文件大小、兼容性等。其余页面也包含重要信息,包括页面分配信息以及实际数据。

如果 MDF 文件头页,或其他重要的管理页损坏或损坏,并且无法被 Microsoft 识别 SQL Server, 然后 SQL Server 会认为整个文件不是有效的主数据库文件并报告此错误。

您可以使用我们的产品 DataNumen SQL Recovery 从损坏的 MDF 文件中恢复数据并解决此错误。

示例文件:

将导致错误的示例损坏的 MDF 文件:

SQL Server 版本 损坏的 MDF 文件 MDF文件修复 DataNumen SQL Recovery
SQL Server 2005 错误1_1.mdf 错误1_1_固定.mdf
SQL Server 2008 R2 错误1_2.mdf 错误1_2_固定.mdf
SQL Server 2012 错误1_3.mdf 错误1_3_固定.mdf
SQL Server 2014 错误1_4.mdf 错误1_4_固定.mdf