使用微软时 SQL Server 要附加或访问损坏的 MDF 数据库文件,您可能会遇到各种令人困惑的错误消息。 下面,我们将列出所有错误,按频率排序。 对于每个错误,我们将概述其症状,解释确切原因,并提供示例文件以及由 DataNumen SQL Recovery. 这将帮助您更好地理解这些错误。 注意 'xxx.MDF' 将代表您损坏的文件的名称 SQL Server MDF 数据库文件。
基于 SQL Server 或者CHECKDB错误信息,错误分为三种:
-
- 分配错误: 我们知道 MDF 和 NDF 文件中的数据分配为 网页. 还有一些专门用于分配管理的页面,如下:
页面类型 | 描述 |
GAM页面 | 存储全局分配映射 (GAM) 信息。 |
SGAM页面 | 存储共享全局分配映射 (SGAM) 信息。 |
IAM 页面 | 存储索引分配映射 (IAM) 信息。 |
PFS 页面 | 存储 PFS 分配信息。 |
如果上述任何一个分配页面出现错误,或者这些分配页面管理的数据与分配信息不一致,则 SQL Server 或 CHECKDB 将报告 分配错误.
- 一致性错误: 对于 网页 用于存储数据的页面,包括数据页和索引页,如果 SQL Server 或 CHECKDB 发现页面内容与校验和之间存在任何不一致,然后他们将报告 一致性错误。
- 所有其他错误: 可能还有其他不属于以上两类的错误。
- xxxx.mdf 不是主数据库文件。 (微软 SQL Server, 错误: 5171)
- 文件“xxxx.mdf”的标头不是有效的数据库文件标头。 FILE SIZE 属性不正确。(Microsoft SQL Server,错误:5172)
- SQL Server 检测到基于逻辑一致性的 I/O 错误:不正确的校验和
- SQL Server 检测到基于逻辑一致性的 I/O 错误:页面损坏
- 您误删除了数据库中的某些记录或某些表。
SQL Server 有一个内置工具叫做 数据库管理中心,其中有 检查数据库 和 检查表 有助于修复损坏的 MDF 数据库的选项。 但是对于损坏严重的MDB数据库文件, DBCC 检查数据库 和 检查表 也会失败。
CHECKDB报的一致性错误:
- SQL Server 检测到基于逻辑一致性的 I/O 错误:不正确的校验和
- sys.xxx 中的行在 sys.xxx 中没有匹配的行。
- 表错误:对象 ID ##,索引 ID ## 将被重建。
- 无法重新创建此系统表索引。
- 对象 ID ##、索引 ID ##、分区 ID ##、分配单元 ID ##(类型未知)、页面 ID (##:560) 在其页眉中包含不正确的页面 ID。
CHECKDB 报告的分配错误:
CHECKDB 报告的所有其他错误: