Подтвердить что ты не робот

База данных MSDB не открывается

У меня есть эта проблема в локальном экземпляре SQL Server 2008 R2 на моей машине. В этом экземпляре имеется несколько баз данных. Но я не вижу ни одного из них из объекта-проводника.

Я могу запросить мои базы данных из нового окна запроса. Но не смог увидеть никого из них.

Всякий раз, когда я пытаюсь исследовать базы данных, я получаю эту ошибку:

База данных msdb не может быть открыта. Он был отмечен SUSPECT путем восстановления. Дополнительную информацию см. В журнале ошибок SQL Server. (Microsoft SQL Server, ошибка: 926).

Я пробовал

  • Обновление соединения
  • Подсоединение соединения
  • Перезапуск службы Sql Server (MSSQLSERVER).
  • Перезапуск SQL Server Management Studio
  • Перезагрузка моей машины.

Я также пробовал комбинации выше, но ничего не работает.

Моя операционная система - Windows 7 Ultimate (64 бит).

Версия SQL Server Management Studio версии 10.50.2500.0.

4b9b3361

Ответ 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 Object Explorer

  • Открыть панель управления → Администрирование → Услуги Control Panel -> Administrative Tools -> Services

  • Выберите пункт Sql Server (MSSQLSERVER) из служб → rightclick → Stop Stop Sql Server (MSSQLSERVER)

  • Откройте 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 файлов с другой рабочей машины, чтобы заставить ее работать.

Ответ 2

То, что мгновенно исправило мою проблему, заключалось в замене существующих файлов MSDBData.mdf и MSDBlog.ldf

в C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA. Я получил эти 2 файла, скопированные с другой рабочей машины. Остановил службу SQL, запущенную на моей машине, удалил выше существующие 2 файла из их местоположения и добавил 2 скопированных. После перезапуска службы исправления были исправлены.