Всем привет! Сегодня рассмотрим несколько решений если ваша база данных в MSSQL находится в режиме SUSPECT или "подозрительно".
Необходимо сделать несколько запросов для поврежденной БД. Выглядят они так:
ALTER DATABASE "myDBname" SET EMERGENCY
DBCC checkdb('myDBname')
ALTER DATABASE "myDBname" SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('myDBname', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE "myDBname" SET MULTI_USER
ALTER DATABASE "myDBname" SET ONLINE
ALTER DATABASE "myDBname" SET EMERGENCY - переводим базу в аварийный режим. Режим аварийного восстановления используется для доступа к базе данных в тех случаях, когда база данных содержит поврежденные данные или когда база данных невозможно открыть в нормальном режиме. В этом режиме база данных будет доступна только для частичного восстановления
DBCC checkdb('myDBname') - начинаем проверку физической и логической целостности объектов (таких как таблицы, представления, кластеры, последовательности, индексы и синонимы)
ALTER DATABASE "myDBname" SET SINGLE_USER WITH ROLLBACK IMMEDIATE - переводим БД в однопользовательский режим.
DBCC CheckDB ('myDBname', REPAIR_ALLOW_DATA_LOSS) - REPAIR_ALLOW_DATA_LOSS: используя этот параметр восстановления, DBCC CHECKDB попытается исправить найденные ошибки. При успешном выполнении это может ПРИВЕСТИ К ПОТЕРЕ ДАННЫХ. REPAIR_ALLOW_DATA_LOSS не является альтернативой для восстановления из резервной копии, рекомендуется использовать его только при отсутствии доступной резервной копии
ALTER DATABASE "myDBname" SET MULTI_USER - переводим БД в многопользовательский режим.
ALTER DATABASE "myDBname" SET ONLINE - переводим БД в оперативный режим.
Данная конструкция сработала у меня и помогла вывести БД в режима SUSPECT после того, как разработчик делал обрезку базы.
А вообще что бы не попадать в такие ситуации. Необходимо грамотно настраивать резервное копирование с транзакционными журналами при полной модели восстановления !
Если интересно могу написать об этом статью !
Надеюсь эта статья помогла вам. Подписывайтесь, ставьте лайки, пишите комментарии.