我有一些数据损坏,无法通过备份恢复数据。它主要影响非聚集索引,因此在删除索引后问题得到解决。
最后,我有:
消息 8905,级别 16,状态 1,第 3 行范围 (1:896320) 中的数据库 ID 15 在 GAM 中标记为已分配,但没有 SGAM 或 IAM 已分配它。CHECKDB 发现 1 个分配错误和 0 个与任何单个对象无关的一致性错误。CHECKDB 在数据库“db_name”中发现 1 个分配错误和 0 个一致性错误。repair_allow_data_loss 是 DBCC CHECKDB (db_name) 发现的错误的最低修复级别。
我想找出哪些是扩展页面,然后查看这些页面中的数据是什么。然后,决定使用repair_allow_data_loss运行CHECHDB命令或尽可能保存一些数据。
它在错误中告诉你
Extent (1:896320)
,所以从第 1:896320 页到 1:896327。这里的问题是您有一个分配错误,其中范围被标记为已分配,但没有其他结构显示它。它真的是某事的一部分吗?是不是?
我知道你来自哪里,但是,不知道页面何时来自。这可能是不久前发生的事情,只是被注意到了,所以为了争论,我们假设那里有数据。是6个月前的吗?昨天?你真的不会知道的。如果它是文本树的一部分怎么办?关键是,唯一安全的做法通常是解除分配范围。没有其他分配结构声明它,您不知道它何时来自。