我们正在尝试从事件中恢复,并努力解决数据库中产生的一些问题。我们的一个表(用户)似乎不知何故被损坏了,因为我们每次接触这个表时都会收到这条消息:
在数据库 7 中未找到分区 ID 72057594068664320 的目录条目。 元数据不一致。 运行 DBCC CHECKDB 检查元数据损坏情况。
我们尝试从旧的 mdf 文件加载,但收到相同的消息。我们的前进之路似乎是删除用户表并使用来自测试数据库的数据重建它。但是,我无法从我们的实时数据库中删除表,因为我仍然收到上述消息。我运行DBCC CHECKTABLE
并收到此消息:
找不到具有分区 ID 的表或索引的条目 72057594068664320 在数据库 8 中。如果存储的 过程引用了已删除的表,或者元数据已损坏。 删除并重新创建存储过程,或者执行 DBCC CHECKDB。
我可以做些什么来删除似乎已损坏的现有表?
通常,当数据库的元数据或系统结构损坏且没有备份时,就会创建具有已知良好结构的新数据库并迁移数据。
这里也缺乏实际
CheckDB
输出,所以谁知道此时损坏有多隐蔽。可能有一些黑客方法可以修复它,但数据库在那时基本上是无法支持的,迁移到新的已知良好的数据库仍然是计划。