Исправление поврежденной базы SQL (Suspect Mode)

Администрирование - Системное

106
Что делать, если база данных под MS SQL ушла в Suspect Mode?

В своей работе столкнулся с ситуацией, когда рабочая база данных в конце дня ушла в режим "Suspect Mode". А архив был за много часов до этого. Перевести ее нормальный режим, пока не произведена починка базы, не получалось. DBCC checkdb тоже отказывалась запускаться, т.к. база в этом режиме. Замкнутый круг? Славо богу нашлась приведенная в этом посте статейка.

Для начала необходимо перевести базу данных в режим EMERGENCY:

EXEC sp_resetstatus 'yourDBname';
ALTER DATABASE yourDBname SET EMERGENCY

Потом выполнять тестирование базы:


DBCC checkdb('yourDBname')
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('yourDBname', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE yourDBname SET MULTI_USER

 

 PS: Этот пост можно считать продолжением http://www.infostart.ru/public/59390/

106

См. также

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. Valerich 26.10.09 17:04 Сейчас в теме
2. Serjik78 1277 26.10.09 17:52 Сейчас в теме
Плюсег, сам не сталкивался, но а вдруг? ;)
3. ninch 48 28.10.09 05:36 Сейчас в теме
Сталкивался. Есть такая неприятная весч. Теперь описание можно будет найти тут. Спасибо
4. WideSmile 28.10.09 12:27 Сейчас в теме
Столкнулся с такой ситуацией - после непредвиденного отключения электричества старые УПСники не успели корректно вырубить серваки.
Воспользовался похожим алгоритмом, база восстановилась, сверил все остатки - всё в порядке. Однако, до тех пор пока не выполнил тестирование и исправление средствами 1С, а также полную реиндексацию - преследовали мелкие глюки (проваливались джобы SQL, пользователей выбивало без сообщения об ошибке, частые зависания сеансов). Сейчас всё в порядке, уже месяца три прошло - всё работает адекватно.
MsDjuice; +1 Ответить
5. WideSmile 28.10.09 12:28 Сейчас в теме
з.ы. проверяйте лучше УПСники - нервов уйдёт меньше ;-)))
6. Valerich 1664 26.11.09 06:59 Сейчас в теме
упала база msdb - перешла в этот веселый режим
бэкапы ее есть, но как из них восстановиться непонятно - suspend mode
при попытке перевести ее в режим EMERGENCY пишет
Msg 5058, Level 16, State 6, Line 2
Option 'EMERGENCY' cannot be set in database 'msdb'.

И как с этим бороться???
7. anderson 195 26.11.09 08:01 Сейчас в теме
(6) попробуйте запустить сервер в монопольном режиме sqlservr.exe -m -c. А дальше с помощью SQLCMD.

ЗЫ: сам не пробовал, рассказывали на курсах для восстановления базы master, может и для msdb подойдет
8. anderson 195 26.11.09 08:04 Сейчас в теме
13. ssega 06.08.14 09:23 Сейчас в теме
(6) Valerich,

тоже было такое на SQL2000SP4 помогла следующая последовательность команд:

выключем СКЛ, удаляем лог, включеам СКЛ, затем:

1.
use master
go
sp_configure 'allow updates', 1
reconfigure with override
go


2.
upd ate sysdatabases set status=32768 where name = 'msdb'
go


3.
DBCC REBUILD_LOG('msdb', 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL\Data\msdb.ldf')
go


4.
use msdb
go
alt er database msdb se t SINGLE_USER with rollback immediate
go
use msdb
go
DBCC CHECKDB('msdb', REPAIR_REBUILD)
go


5.
use master
go
sp_dboption 'msdb', 'single user', 'false'
go


6.
use master
go
sp_configure 'allow updates', 0
reconfigure with override
go
9. 18.10.11 20:07 Сейчас в теме
Начал с DBCC. Помогло реально. Большое спасибо. А то не знал, с какой стороны подступиться, сплошной отлуп от SQL сервера.

База перешла в режим после отключения питания. Виноват был не УПС, а Пилот, как оказалось.
10. Geqsogen 25.10.11 20:42 Сейчас в теме
Помогло после крушения рэйда и когда поздно заметили пропажу бэкапов. Но сначала надо было собрать еще инфы, чтобы восстановить базу на MSSQL 2005 SP4, которая помечена Suspend.
Пишу коротко по делу - только в такой последовательности удалось все сделать:

Use master
go
sp_configure 'allow updates', 1
go
---Execute---
reconfigure with override
---Execute---
select status from sysdatabases where name = 'DataBaseName'
---Execute---
EXEC sp_resetstatus 'DataBaseName';
ALTER DATABASE DataBaseName SET EMERGENCY
---Execute---
alter database DataBaseName set EMERGENCY, SINGLE_USER
---Execute---
dbcc checkdb ('DataBaseName', REPAIR_ALLOW_DATA_LOSS)
---Execute---
alter database DataBaseName set ONLINE, MULTI_USER
---Execute---
Use master
go
sp_configure 'allow updates', 0
go
---Execute---
reconfigure with override

ПыСы После "dbcc checkdb" ругнулся на то что не может создать лог файл - пришлось создать папку, которую он просил и повторить с этого пункта еще раз (база раньше стояла в другом месте)
DmitriyDI; Gruuush; insurgut; Zircool; IT-стратегия; K_A_O; +6 Ответить
11. electronik 19.04.12 15:37 Сейчас в теме
Воспользовался похожим алгоритмом, база восстановилась, сверил все остатки - всё в порядке. Однако, до тех пор пока не выполнил тестирование и исправление средствами 1С, а также полную реиндексацию - преследовали мелкие глюки (проваливались джобы SQL, пользователей выбивало без сообщения об ошибке, частые зависания сеансов). Сейчас всё в порядке
12. Motor24 06.08.13 16:14 Сейчас в теме
Спасибо - вчера буквально столкнулся. Оказывается связка SQL 2005+1С 7.7 ещё весьма популярна

(11)"Однако, до тех пор пока не выполнил тестирование и исправление средствами 1С, а также полную реиндексацию - преследовали мелкие глюки"
Главное, что восстановилось основное, а тестирование после этого уже радостная мелочь. Вчера в suspect легла 12-гиговая база, было очень весело :)
14. Zhilyakovdr 89 23.12.15 21:10 Сейчас в теме
15. Larkin 387 07.04.16 20:57 Сейчас в теме
Плюс в карму!!! Огромное спасибо!
16. Tommy1987 4 15.06.17 20:26 Сейчас в теме
17. poyson 18.06.18 16:05 Сейчас в теме
После этих шагов при попытке зайти в конфигуратор база выдало следующее сообщение:
"файлы запроса и ответа на лицензирование конфигурации были удалены из конфигурации" и закрывается?
Никто не в курсе что делать с этим?
18. Timur.V 26 18.06.18 17:26 Сейчас в теме
(17)
файлы запроса и ответа на лицензирование конфигурации были удалены из конфигурации


"В подобной ситуации помогло следующее: открыть проблемную ИБ в конфигураторе -> меню Конфигурация -> Поддержка -> Настройка поддержки -> кн. "Сравнить, объединить" -> "Выполнить". Проблема ушла. ps. Конфа на поддержке с возможностью изменения"
Сравнивать с конфигурацией поставщика.

источник
19. poyson 18.06.18 18:13 Сейчас в теме
(18) Проблема в том, что это сообщение появляется при попытке войти в конфигуратор....
20. Timur.V 26 18.06.18 18:25 Сейчас в теме
Оставьте свое сообщение