Ответ 1
Я нашел ответ в эту ссылку.
EDIT: Включая оба решения из ссылки из-за возможного Linkrot в будущем.
Войдите в систему с помощью учетной записи sa
для обоих решений.
Решение 1
-
Открыть новое окно запроса
-
EXEC sp_resetstatus 'DB_Name';
(Объяснение:sp_resetstatus
отключает флаг подозрительности в базе данных. Эта процедура обновляет столбцы режима и состояния именованной базы данных вsys.databases
. Также обратите внимание, что только логины, имеющие привилегии sysadmin, могут выполните это.) -
ALTER DATABASE DB_Name SET EMERGENCY;
(Объяснение: Как только база данных установлена в режим EMERGENCY, она становится READ_ONLY копией, и только члены фиксированных ролей сервера sysadmin имеют права доступа к ней.) -
DBCC checkdb('DB_Name');
(Объяснение: проверьте целостность всех объектов.) -
ALTER DATABASE DB_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
(Объяснение: Установите базу данных в однопользовательский режим.) -
DBCC CheckDB ('DB_Name', REPAIR_ALLOW_DATA_LOSS);
(Объяснение: Исправьте ошибки) -
ALTER DATABASE DB_Name SET MULTI_USER;
(Объяснение: Установите базу данных в многопользовательский режим, чтобы теперь к ней можно было обращаться другими.)
Решение 2
-
В обозревателе объектов → Открытое соединение → rightclick → Stop
-
Открыть панель управления → Администрирование → Услуги
-
Выберите пункт
Sql Server (MSSQLSERVER)
из служб → rightclick → Stop -
Откройте
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
-
Переместите
MSDBData.mdf
иMSDBlog.ldf
в любое другое место -
Затем скопируйте эти файлы снова с нового места и поместите их в более старое место
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
-
В открывшемся соединении в объекте Explorer → rightclick → Пуск
-
Затем обновите базу данных.
-
Затем вы можете отсоединить файл MSDB
Второе решение сработало для меня.
Примечание. Мне нужно было получить базу данных msdb mdf и ldf файлов с другой рабочей машины, чтобы заставить ее работать.