Previous Entry Share
msdb ошибки и где их смотреть
me_home
telemultimedia
msdb - служебная база для заданий, расписаний и пр.
Нужно делать бэкап перед и после серьезных изменений!!
У меня не было.Но и база тестовая.

1) Сначала надо в лог глянуть, чтобы узнать, почему база ушла в suspect
Журнал ошибок сервера SQL Server можно просмотреть, используя среду Среда SQL Server Management Studio или любой текстовый редактор. По умолчанию журнал ошибок содержится в файлах Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG и ERRORLOG.n.

у меня пишет Operating system error 1117(Запрос не был выполнен из-за ошибки ввода/вывода на устройстве.) on file "C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf" during CheckLogBlockReadComplete.


2) остановка сервера (неименованный. про именованные тут https://technet.microsoft.com/en-us/library/ms187008(v=sql.105).aspx)
net stop MSSQLServer
остановка агента
net stop SQLSERVERAGENT (потом net start SQLSERVERAGENT)

3) проверка диска. у меня Acronis Disk Director нашел битый блок. исправил и все магическим образом ожило.

варианты были - тереть ldf и его потом восстанавливать. Переносить msdb из темплейта. Создать заново.

4)
start the sql service by bypassing the autorecover:
net start mssqlserver /f /m /t3608

если запуск сервера в sqlcmd для ввода запросов в командной строке (go в конце) - то дефисы а не слэши
start /d"D:\MSSQL.1\MSSQL\Binn\" sqlservr.exe -m -c

(мой C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\binn\)


5) EXEC sp_resetstatus 'msdb';
Процедура sp_resetstatus сбрасывает флаг SUSPECT в базе данных. Эта процедура обновляет столбцы режима и состояния названной базы данных в представлении каталога sys.databases. Перед выполнением этой процедуры в SQL Server необходимо просмотреть журнал ошибок и устранить все проблемы. После выполнения процедуры sp_resetstatus следует остановить и перезапустить экземпляр SQL Server.



6) проверка - DBCC checkdb('msdb')

если отделять и менять ( из темплейта)
SQLCMD -E -S -dmaster -Q"EXEC sp_detach_db msdb"
переименовать те что есть и перенести?
https://www.mssqltips.com/sqlservertip/3191/how-to-recover-a-suspect-msdb-database-in-sql-server/
https://technet.microsoft.com/en-us/library/dd207003(v=sql.110).aspx

возврат:
ALTER DATABASE [Ваша БД] SET MULTI_USER WITH ROLLBACK IMMEDIATE; http://www.sql.ru/forum/456444/monopolnyy-dostup (http://www.sql.ru/forum/456444/monopolnyy-dostup)
Tags:

?

Log in