症状:

使用时 DBCC 检查数据库REPAIR_ALLOW_DATA_LOSS 修复 修复损坏的 .MDF 数据库的参数,如下所示:

DBCC CHECKDB(xxxx,'REPAIR_ALLOW_DATA_LOSS')

您会看到以下错误消息:

修复:为数据库“Error1”中的对象“sysobjvalues”成功重建聚簇索引。
修复:为数据库“Error1”中的对象“syscolpars”成功重建了非聚集索引。
“Error1”的 DBCC 结果。
“sys.sysrscols”的 DBCC 结果。
对象“sys.sysrscols”在 1092 页中有 14 行。
“sys.sysrowsets”的 DBCC 结果。
对象“sys.sysrowsets”在 148 个页面中有 3 行。
“sys.sysclones”的 DBCC 结果。
对象“sys.sysclones”在 0 页中有 0 行。
“sys.sysallocunits”的 DBCC 结果。
对象“sys.sysallocunits”在 172 页中有 2 行。
“sys.sysfiles1”的 DBCC 结果。
对象“sys.sysfiles2”在 1 页中有 1 行。
“sys.sysseobjvalues”的 DBCC 结果。
对象“sys.sysseobjvalues”在 0 页中有 0 行。
“sys.syspriorities”的 DBCC 结果。
对象“sys.syspriorities”在 0 页中有 0 行。
'sys.sys 的 DBCC 结果dbf抹布'。
对象“sys.sys”在 0 页中有 0 行dbf抹布”。
“sys.sysfgfrag”的 DBCC 结果。
对象“sys.sysfgfrag”在 0 页中有 0 行。
'sys.sys 的 DBCC 结果dbf岛'。
对象“sys.sys”在 2 页中有 1 行dbf列斯”。
“sys.syspru”的 DBCC 结果。
对象“sys.syspru”在 0 页中有 0 行。
“sys.sysbrickfiles”的 DBCC 结果。
对象“sys.sysbrickfiles”在 0 页中有 0 行。
“sys.sysphfg”的 DBCC 结果。
对象“sys.sysphfg”在 1 页中有 1 行。
“sys.sysprufiles”的 DBCC 结果。
对象“sys.sysprufiles”在 2 页中有 1 行。
“sys.sysftinds”的 DBCC 结果。
对象“sys.sysftinds”在 0 页中有 0 行。
“sys.sysowners”的 DBCC 结果。
对象“sys.sysowners”在 14 页中有 1 行。
“sys.sysdbreg”的 DBCC 结果。
对象“sys.sysdbreg”在 0 页中有 0 行。
“sys.sysprivs”的 DBCC 结果。
对象“sys.sysprivs”在 140 页中有 1 行。
“sys.syscolpars”的 DBCC 结果。
修复:页面 (1:63) 已从对象 ID 41、索引 ID 1、分区 ID 281474979397632、分配单元 ID 281474979397632(类型行内数据)中释放。
修复:为数据库“Error1”中的对象“sys.syscolpars, nc”成功重建了非聚集索引。
消息8945,级别16,状态1,行8
表错误:对象 ID 41,索引 ID 1 将被重建。
无法修复此错误。
消息8978,级别16,状态1,行8
表错误:对象 ID 41,索引 ID 1,分区 ID 281474979397632,分配单元 ID 281474979397632(行内数据类型)。 页面 (1:61) 缺少上一页 (1:63) 的引用。 可能的连锁问题。
错误已修复。
消息8928,级别16,状态1,行8
对象 ID 41、索引 ID 1、分区 ID 281474979397632、分配单元 ID 281474979397632(行内数据类型):无法处理页面 (1:63)。 有关详细信息,请参阅其他错误。
错误已修复。
消息8939,级别16,状态98,行8
表错误:对象 ID 41,索引 ID 1,分区 ID 281474979397632,分配单元 ID 281474979397632(行内数据类型),页面 (1:63)。 测试 (IS_OFF (BUF_IOERR, pBUF->bstat)) 失败。 值为 2057 和 -4。
错误已修复。
消息8976,级别16,状态1,行8
表错误:对象 ID 41,索引 ID 1,分区 ID 281474979397632,分配单元 ID 281474979397632(行内数据类型)。 尽管其父级 (1:63) 和前一个 (1:111) 引用了页面 (1:168),但在扫描中未看到该页面。 检查任何以前的错误。
错误已修复。
消息8945,级别16,状态1,行8
表错误:对象 ID 41,索引 ID 2 将被重建。
错误已修复。
对象“sys.syscolpars”在 881 页中有 15 行。
CHECKDB 在表“sys.syscolpars”(对象 ID 0)中发现 4 个分配错误和 41 个一致性错误。
CHECKDB 修复了表“sys.syscolpars”(对象 ID 0)中的 4 个分配错误和 41 个一致性错误。
“sys.sysxlgns”的 DBCC 结果。
对象“sys.sysxlgns”在 0 页中有 0 行。
“sys.sysxsrvs”的 DBCC 结果。
对象“sys.sysxsrvs”在 0 页中有 0 行。
“sys.sysnsobjs”的 DBCC 结果。
对象“sys.sysnsobjs”在 1 页中有 1 行。
“sys.sysusermsgs”的 DBCC 结果。
对象“sys.sysusermsgs”在 0 页中有 0 行。
“sys.syscerts”的 DBCC 结果。
对象“sys.syscerts”在 0 页中有 0 行。
“sys.sysrmtlgns”的 DBCC 结果。
对象“sys.sysrmtlgns”在 0 页中有 0 行。
“sys.syslnklgns”的 DBCC 结果。
对象“sys.syslnklgns”在 0 页中有 0 行。
“sys.sysxprops”的 DBCC 结果。
对象“sys.sysxprops”在 0 页中有 0 行。
“sys.sysscalartypes”的 DBCC 结果。
对象“sys.sysscalartypes”在 34 页中有 1 行。
“sys.systypedsubobjs”的 DBCC 结果。
对象“sys.systypedsubobjs”在 0 页中有 0 行。
“sys.sysidxstats”的 DBCC 结果。
对象“sys.sysidxstats”在 207 页中有 5 行。
“sys.sysiscols”的 DBCC 结果。
对象“sys.sysiscols”在 399 页中有 2 行。
“sys.sysendpts”的 DBCC 结果。
对象“sys.sysendpts”在 0 页中有 0 行。
“sys.syswebmethods”的 DBCC 结果。
对象“sys.syswebmethods”在 0 个页面中有 0 行。
“sys.sysbinobjs”的 DBCC 结果。
对象“sys.sysbinobjs”在 23 页中有 1 行。
“sys.sysaudacts”的 DBCC 结果。
对象“sys.sysaudacts”在 0 页中有 0 行。
“sys.sysobjvalues”的 DBCC 结果。
修复:为数据库“Error1”中的对象“sys.sysobjvalues”成功重建聚簇索引。
修复:页面 (1:24) 已从对象 ID 60、索引 ID 1、分区 ID 281474980642816、分配单元 ID 281474980642816(类型行内数据)中释放。
修复:删除了 ID 为 742981632 的行外数据列,对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 71776119065149440(类型 LOB 数据)在页 (1:369),槽 0。
修复:删除了 ID 为 742981632 的行外数据列,对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 71776119065149440(类型 LOB 数据)在页 (1:370),槽 0。
修复:删除了 ID 为 742981632 的行外数据列,对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 71776119065149440(类型 LOB 数据)在页 (1:371),槽 0。
消息8945,级别16,状态1,行8
表错误:对象 ID 60,索引 ID 1 将被重建。
错误已修复。
消息8928,级别16,状态1,行8
对象 ID 60、索引 ID 1、分区 ID 281474980642816、分配单元 ID 281474980642816(行内数据类型):无法处理页面 (1:24)。 有关详细信息,请参阅其他错误。
错误已修复。
消息8939,级别16,状态98,行8
表错误:对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 281474980642816(行内数据类型),页面 (1:24)。 测试 (IS_OFF (BUF_IOERR, pBUF->bstat)) 失败。 值为 2057 和 -4。
错误已修复。
消息8939,级别16,状态98,行8
表错误:对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 281474980642816(行内数据类型),页面 (1:24)。 测试 (IS_OFF (BUF_IOERR, pBUF->bstat)) 失败。 值为 2057 和 -4。
错误已修复。
消息8976,级别16,状态1,行8
表错误:对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 281474980642816(行内数据类型)。 尽管其父级 (1:24) 和前一个 (1:43) 引用了页面 (1:213),但在扫描中未看到该页面。 检查任何以前的错误。
错误已修复。
消息8978,级别16,状态1,行8
表错误:对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 281474980642816(行内数据类型)。 页面 (1:210) 缺少上一页 (1:24) 的引用。 可能的连锁问题。
错误已修复。
消息8964,级别16,状态1,行8
表错误:对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 71776119065149440(类型 LOB 数据)。 未引用页面 (1:369)、槽 0、文本 ID 742981632 处的行外数据节点。
错误已修复。
消息8964,级别16,状态1,行8
表错误:对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 71776119065149440(类型 LOB 数据)。 未引用页面 (1:370)、槽 0、文本 ID 742981632 处的行外数据节点。
错误已修复。
消息8964,级别16,状态1,行8
表错误:对象 ID 60,索引 ID 1,分区 ID 281474980642816,分配单元 ID 71776119065149440(类型 LOB 数据)。 未引用页面 (1:371)、槽 0、文本 ID 742981632 处的行外数据节点。
错误已修复。
对象“sys.sysobjvalues”在 203 页中有 20 行。
CHECKDB 在表“sys.sysobjvalues”(对象 ID 0)中发现 8 个分配错误和 60 个一致性错误。
CHECKDB 修复了表“sys.sysobjvalues”(对象 ID 0)中的 8 个分配错误和 60 个一致性错误。
“sys.syscscolsegments”的 DBCC 结果。
对象“sys.syscscolsegments”在 0 页中有 0 行。
“sys.syscsdictionaries”的 DBCC 结果。
对象“sys.syscsdictionaries”在 0 页中有 0 行。
“sys.sysclsobjs”的 DBCC 结果。
对象“sys.sysclsobjs”在 16 页中有 1 行。
“sys.sysrowsetrefs”的 DBCC 结果。
对象“sys.sysrowsetrefs”在 0 页中有 0 行。
“sys.sysremsvcbinds”的 DBCC 结果。
对象“sys.sysremsvcbinds”在 0 页中有 0 行。
“sys.sysxmitqueue”的 DBCC 结果。
对象“sys.sysxmitqueue”在 0 页中有 0 行。
“sys.sysrts”的 DBCC 结果。
对象“sys.sysrts”在 1 页中有 1 行。
“sys.sysconvgroup”的 DBCC 结果。
对象“sys.sysconvgroup”在 0 页中有 0 行。
“sys.sysdesend”的 DBCC 结果。
对象“sys.sysdesend”在 0 页中有 0 行。
“sys.sysdercv”的 DBCC 结果。
对象“sys.sysdercv”在 0 页中有 0 行。
“sys.syssingleobjrefs”的 DBCC 结果。
对象“sys.syssingleobjrefs”在 171 页中有 1 行。
“sys.sysmultiobjrefs”的 DBCC 结果。
对象“sys.sysmultiobjrefs”在 107 页中有 1 行。
“sys.sysguidrefs”的 DBCC 结果。
对象“sys.sysguidrefs”在 0 页中有 0 行。
“sys.sysfoqueues”的 DBCC 结果。
对象“sys.sysfoqueues”在 0 页中有 0 行。
“sys.syschildinsts”的 DBCC 结果。
对象“sys.syschildinsts”在 0 页中有 0 行。
“sys.syscompfragments”的 DBCC 结果。
对象“sys.syscompfragments”在 0 页中有 0 行。
“sys.sysftsemanticsdb”的 DBCC 结果。
对象“sys.sysftsemanticsdb”在 0 页中有 0 行。
“sys.sysftstops”的 DBCC 结果。
对象“sys.sysftstops”在 0 页中有 0 行。
“sys.sysftproperties”的 DBCC 结果。
对象“sys.sysftproperties”在 0 页中有 0 行。
“sys.sysxmitbody”的 DBCC 结果。
对象“sys.sysxmitbody”在 0 页中有 0 行。
“sys.sysfos”的 DBCC 结果。
对象“sys.sysfos”在 0 页中有 0 行。
“sys.sysqnames”的 DBCC 结果。
对象“sys.sysqnames”在 98 页中有 1 行。
“sys.sysxmlcomponent”的 DBCC 结果。
对象“sys.sysxmlcomponent”在 100 页中有 1 行。
“sys.sysxmlfacet”的 DBCC 结果。
对象“sys.sysxmlfacet”在 112 页中有 1 行。
“sys.sysxmlplacement”的 DBCC 结果。
对象“sys.sysxmlplacement”在 19 页中有 1 行。
“sys.sysobjkeycrypts”的 DBCC 结果。
对象“sys.sysobjkeycrypts”在 0 页中有 0 行。
“sys.sysasymkeys”的 DBCC 结果。
对象“sys.sysasymkeys”在 0 页中有 0 行。
“sys.syssqlguides”的 DBCC 结果。
对象“sys.syssqlguides”在 0 页中有 0 行。
“sys.sysbinsubobjs”的 DBCC 结果。
对象“sys.sysbinsubobjs”在 3 页中有 1 行。
“sys.syssoftobjrefs”的 DBCC 结果。
对象“sys.syssoftobjrefs”在 0 页中有 0 行。
“sys.plan_persist_plan”的 DBCC 结果。
对象“sys.plan_persist_plan”在 0 页中有 0 行。
“sys.plan_persist_runtime_stats”的 DBCC 结果。
对象“sys.plan_persist_runtime_stats”在 0 页中有 0 行。
“sys.plan_persist_runtime_stats_interval”的 DBCC 结果。
对象“sys.plan_persist_runtime_stats_interval”在 0 页中有 0 行。
“sys.plan_persist_context_settings”的 DBCC 结果。
对象“sys.plan_persist_context_settings”在 0 页中有 0 行。
“sys.sqlagent_jobs”的 DBCC 结果。
对象“sys.sqlagent_jobs”在 0 页中有 0 行。
“sys.sqlagent_jobsteps”的 DBCC 结果。
对象“sys.sqlagent_jobsteps”在 0 页中有 0 行。
“sys.sqlagent_job_history”的 DBCC 结果。
对象“sys.sqlagent_job_history”在 0 页中有 0 行。
“sys.queue_messages_2009058193”的 DBCC 结果。
对象“sys.queue_messages_0”在 0 页中有 2009058193 行。
“sys.queue_messages_2041058307”的 DBCC 结果。
对象“sys.queue_messages_0”在 0 页中有 2041058307 行。
“sys.filestream_tombstone_2073058421”的 DBCC 结果。
对象“sys.filestream_tombstone_0”在 0 页中有 2073058421 行。
“sys.syscommittab”的 DBCC 结果。
对象“sys.syscommittab”在 0 页中有 0 行。
“sys.filetable_updates_2105058535”的 DBCC 结果。
对象“sys.filetable_updates_0”在 0 页中有 2105058535 行。
“sys.plan_persist_query_text”的 DBCC 结果。
对象“sys.plan_persist_query_text”在 0 页中有 0 行。
“sys.plan_persist_query”的 DBCC 结果。
对象“sys.plan_persist_query”在 0 页中有 0 行。
CHECKDB 在数据库“Error0”中发现 12 个分配错误和 1 个一致性错误。
CHECKDB 修复了数据库“Error0”中的 12 个分配错误和 1 个一致性错误。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的 I/O 错误:校验和不正确(预期:0xb7bd14b3;实际:0xb7df14b2)。 它发生在读取数据库 ID 1 中的页面 (24:39) 时,文件 'C:Program FilesMicrosoft 中的偏移量为 0x00000000030000 SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf'。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是威胁数据库完整性的严重错误情况,必须立即更正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能由多种因素引起; 有关详细信息,请参阅 SQL Server 在线图书。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的 I/O 错误:校验和不正确(预期:0xb7bd14b3;实际:0xb7df14b2)。 它发生在读取数据库 ID 1 中的页面 (24:39) 时,文件 'C:Program FilesMicrosoft 中的偏移量为 0x00000000030000 SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf'。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是威胁数据库完整性的严重错误情况,必须立即更正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能由多种因素引起; 有关详细信息,请参阅 SQL Server 在线图书。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的 I/O 错误:校验和不正确(预期:0xb7bd14b3;实际:0xb7df14b2)。 它发生在读取数据库 ID 1 中的页面 (24:39) 时,文件 'C:Program FilesMicrosoft 中的偏移量为 0x00000000030000 SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf'。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是威胁数据库完整性的严重错误情况,必须立即更正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能由多种因素引起; 有关详细信息,请参阅 SQL Server 在线图书。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的 I/O 错误:校验和不正确(预期:0xc8e2ed96;实际:0xb8a2f3df)。 它发生在读取数据库 ID 1 中的页面 (63:39) 时,文件 'C:Program FilesMicrosoft 中的偏移量 0x0000000007e000 SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf'。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是威胁数据库完整性的严重错误情况,必须立即更正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能由多种因素引起; 有关详细信息,请参阅 SQL Server 在线图书。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的 I/O 错误:校验和不正确(预期:0xc8e2ed96;实际:0xb8a2f3df)。 它发生在读取数据库 ID 1 中的页面 (63:39) 时,文件 'C:Program FilesMicrosoft 中的偏移量 0x0000000007e000 SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf'。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是威胁数据库完整性的严重错误情况,必须立即更正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能由多种因素引起; 有关详细信息,请参阅 SQL Server 在线图书。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的 I/O 错误:校验和不正确(预期:0xc8e2ed96;实际:0xb8a2f3df)。 它发生在读取数据库 ID 1 中的页面 (63:39) 时,文件 'C:Program FilesMicrosoft 中的偏移量 0x0000000007e000 SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf'。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是威胁数据库完整性的严重错误情况,必须立即更正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能由多种因素引起; 有关详细信息,请参阅 SQL Server 在线图书。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的 I/O 错误:校验和不正确(预期:0xc8e2ed96;实际:0xb8a2f3df)。 它发生在读取数据库 ID 1 中的页面 (63:39) 时,文件 'C:Program FilesMicrosoft 中的偏移量 0x0000000007e000 SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf'。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是威胁数据库完整性的严重错误情况,必须立即更正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能由多种因素引起; 有关详细信息,请参阅 SQL Server 在线图书。

其中“Error1”是正在修复的损坏 MDF 数据库的名称。

讯息8945 表示表错误,这是一个一致性错误。

报错信息截图:

错误消息“表错误:对象 ID ##,索引 ID ## 将被重建”的屏幕截图。

准确的解释:

在一个 SQL Server MDF数据库,有很多 系统表 用于存储数据库的结构和元数据。

当CHECKDB发现其中一个系统表存在不一致时,会报错信息 短信8945、8978、8928、8939等 并尝试修复错误。 如果它不能修复错误,那么恢复将失败并会导致更多错误,例如 讯息824.

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

示例文件:

样本损坏的 MDF 文件将导致 讯息8945 错误:

SQL Server 版本 损坏的 MDF 文件 MDF文件修复 DataNumen SQL Recovery
SQL Server 2014 Error5.mdf Error5_fixed.mdf