Назад | Перейти на главную страницу

Ошибка проверки целостности базы данных

Мои планы ночного обслуживания не подходят для двух баз данных. Я даже не понимаю, что это значит. Есть идеи, как исправить?

Вот ошибка в плане обслуживания:

Executing the query "DBCC CHECKDB(N'Site_DB')  WITH NO_INFOMSGS
" failed with the following error: "The Index Allocation Map (IAM) page (0:0) is pointed to by the previous pointer of IAM page (1:747) in object ID 0, index ID -1, partition ID 0, alloc unit ID 72057597046816768 (type Unknown), but it was not detected in the scan.
CHECKDB found 1 allocation errors and 0 consistency errors not associated with any single object.
CHECKDB found 1 allocation errors and 0 consistency errors in database 'Site_DB'.
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (Site_DB).". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

Интересно то, что две разные базы данных сообщают об этом с одним и тем же идентификатором страницы. Не уверен, почему это так.

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

DBCC TRACEON(3604,-1)
GO
DBCC PAGE('Site_DB', 1, 747, 3)

Результат значения Metadata: IndexId был -1. В статье говорилось, что если оно больше 1, отбросьте и воссоздайте некластеризованный индекс. Если было 0 или 1, восстановите из резервной копии или попробуйте исправить. К сожалению, ни одна из этих ситуаций не охватывает значение -1 ...

Итак, я пошел вперед и побежал

DBCC CHECKDB('Site_DB', REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS

Он вернулся и сказал, если обнаружил ошибки распределения и исправил их. Просто чтобы убедиться, что я еще раз запустил DBCC CHECKDB ('SiteDB') WITH NO_INFOMSGS, он вернулся.