我被要求查看报告“撕裂页面”错误的SQL 2005数据库。
我可以查找MsgIDs等等,但是我需要一些指针来解释更广泛意义上的DBCC CHECKDB输出。
在此示例中:
Msg 8909, Level 16, State 1, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 8795506764168298496 (type Unknown), page ID (1:106887) contains an incorrect page ID in its page header. The PageId in the page header = (1041:-523272204). Msg 8939, Level 16, State 98, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 8971733407675449344 (type Unknown), page (0:0). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 62916617 and -4. CHECKDB found 0 allocation errors and 37 consistency errors not associated with any single object.
...显然错误与任何单个对象无关(请注意,ObjectID和IndexID没有正确的值)。这究竟是什么意思?如果它不是单个对象那么它是什么?
在此示例中:
Msg 8939, Level 16, State 98, Line 1 Table error: Object ID 69575286, index ID 1, partition ID 286034662653952, alloc unit ID 286034662653952 (type In-row data), page (1:207727). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 62916617 and -1. Msg 8964, Level 16, State 1, Line 1 Table error: Object ID 69575286, index ID 1, partition ID 286034662653952, alloc unit ID 71780678747160576 (type LOB data). The off-row data node at page (1:443), slot 26, text ID 1509706039296 is not referenced.
...是指包含数据的页面,还是包含索引的页面?它提到了行外数据,但它也给出了索引ID。索引ID值0和1表示什么?
顺便提一下,这是为了帮助一个慈善机构,所以任何帮助都非常感激。感谢。
PS:我还没在现场,只是查看他们发给我的dbcc日志,所以我还不能做任何修改。编辑:其SQL 2005 v 9.0.3042
编辑:让我们假设,假设您知道,恢复备份可能不是一种选择,因为撕裂的页面已经在数据库中存在了几个月,因为第三方没有将维护计划重新安装到位后服务器交换机,或某些此类方案。因此,假设调查错误并尝试修复它们或隔离它们是唯一的行动方案。
答案 0 :(得分:1)
Paul Randall几乎有你需要的每一个答案。
然而,在实践中,你应该考虑“恢复”......
答案 1 :(得分:1)
我是根据这里的经验说的......
错误表示您的数据库已损坏。
我会恢复没有此错误的最新备份,并使用它。
您可以运行DBCC来修复损坏,但您很可能会丢失数据。我不建议这样做,因为“恢复/修复”似乎可行,但不是。