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)