Помогите интерпретировать вывод DBCC CHECKDB, связанный с Torn Pages - PullRequest
2 голосов
/ 27 августа 2009

Меня попросили просмотреть базу данных 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

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

Ответы [ 2 ]

1 голос
/ 27 августа 2009

Я говорю по опыту здесь ...

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

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

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

1 голос
/ 27 августа 2009

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

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

...