SQL Server 报错8909(Object ID 0, index ID 1, partition ID 0)

 我们经常用到DBCC CHECKDB来查看有关数据库的错误问题,报错如下:

Msg 8909, Level 16, State 1, Line 2
Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 72057594045726720 (type Unknown), page ID (16:1330467) contains an incorrect page ID in its page header. The PageId in the page header = (48:93722876).

具体来说,让人迷惑的部分是“Object ID 0, index ID -1, partition ID 0”。系统中没有对象ID为0,索引怎么会有-1的ID呢?

这种模式意味着 DBCC 无法确定页面属于哪个对象。

SQL Server 2005 重写 DBCC CHECKDB 时新增了一种数据结构,称为 DbccCombinedID,它封装了标识页面所属位置的所有相关 ID。对象、索引和分区 ID 的默认值分别为 0、-1 和 0。当 DBCC CHECKDB 读取页面时,根据页头中的 m_objId 和 m_indexId 字段计算分配单元 ID(计算方式见),然后 DBCC CHECKDB 进行所有元数据查找以找出其他 ID .如果页眉损坏,导致计算出的分配单元 ID 无效,则无法填充其他 ID,也无法找到页面的“所有者”。可能还会有其他错误消息引用损坏的页面。

所以要怎么做?按照处理损坏的常用方法

原文地址:https://www.cnblogs.com/VicLiu/p/15602799.html