У нас есть БД SQL 2000. Сбой сервера из-за сбоя массива Raid. Теперь, когда мы запускаем DBCC CHECKDB, мы получаем сообщение об ошибке, что на 9 страницах есть 27 ошибок согласованности.
Когда мы запускаем DBCC PAGE на этих страницах, мы получаем следующее:
Msg 8939, Level 16, State 106, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (m_freeCnt == freeCnt) failed. Values are 2 and 19.
Msg 8939, Level 16, State 108, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (emptySlotCnt == 0) failed. Values are 1 and 0.
Поскольку указанный индекс не кластеризован и создается уникальной константой, содержащей 2 столбца, мы попытались удалить и воссоздать индекс. Это привело к следующей ошибке:
CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 2. Most significant primary key is '3280'.
The statement has been terminated.
Однако бег
Select var_id,result_on
from tests
group by var_id,result_on
having count(*)>1
возвращает 0 строк.
Вот что мы планируем сделать:
Может ли кто-нибудь пробить дыры в этом подходе? Может быть, предложить другой подход? Нам нужно минимальное время простоя.
Размер базы данных SQL 2000 94 ГБ Таблица с поврежденными страницами содержит более 460 миллионов строк данных
Спасибо за помощь.
Радж
Ваше решение для восстановления - это учебник для продолжения. Предполагая, что у вас есть соответствующие резервные копии и вы можете сделать резервную копию журнала транзакций для поврежденной базы данных, тогда ваша стратегия - это учебник, который нужно реализовать.
Однако, прежде чем продолжить, рассмотрели ли вы возможность воссоздания только затронутой таблицы?
Иногда вы можете создать точную копию затронутой таблицы, выполнив
select *
into NewTableFromOld
from DamagedTable
Затем просто удалите / замените поврежденную таблицу новой, не забудьте добавить соответствующие ограничения и индексы.
Я бы попробовал сначала скопировать данные в файл, а затем снова поместить их в новую таблицу. SELECT INTO не подходит (IMO) для такого количества записей ...