Помогите интерпретировать вывод DBCC CHECKDB, связанный с вырванными страницами

Меня попросили посмотреть базу данных SQL 2005, которая сообщает об ошибках «разорванной страницы».

Я могу посмотреть MsgID и так далее, но мне просто нужно несколько указателей, интерпретирующих вывод 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.

... это относится к страницам, содержащим данные, или страницам, содержащим индексы? В нем упоминаются данные вне строки, но также указывается идентификатор индекса. Что означают значения идентификатора индекса 0 и 1?

Кстати, это помощь благотворительности, так что любая помощь приветствуется. Спасибо.

PS: я еще не на месте, просто просматриваю журналы dbcc, которые они мне прислали, так что я пока не могу что-то делать.

Изменить: это SQL 2005 v 9.0.3042.

Изменить: предположим, вы знаете, гипотетически, что восстановление резервных копий может быть невозможным, потому что порванные страницы находились в базе данных в течение нескольких месяцев из-за того, что третья сторона не вернула планы обслуживания после переключения сервера. , или какой-то такой сценарий. Следовательно, предположим, что исследование ошибок и попытка их исправить или изолировать — единственный способ действий.


person codeulike    schedule 27.08.2009    source источник


Ответы (2)


Пол Рэндалл знает почти все ответы, которые вы когда-нибудь понадобится.

Однако на практике вы уже должны думать о "восстановлении"...

person gbn    schedule 27.08.2009
comment
Пожалуйста. Я должен был добавить: если вы не можете восстановить, прочитайте статью о мифах о ремонте ... - person gbn; 27.08.2009

вот по опыту говорю...

Там ошибка означает, что ваша база данных повреждена.

Я бы восстановил последнюю резервную копию, в которой нет этой ошибки, и использовал бы ее.

Вы можете запустить DBCC, чтобы исправить ущерб, но есть большая вероятность, что вы потеряете данные. Я не рекомендую делать это, потому что может показаться, что «восстановление/восстановление» работает, но это не так.

person Jay Riggs    schedule 27.08.2009