无法打开数据库MSDB

时间:2013-04-26 05:36:23

标签: sql-server-2008-r2 ssms

我在我的计算机上的SQL Server 2008 R2的本地实例中遇到此问题。这个实例上有几个数据库。但是我无法从对象资源管理器中看到它们中的任何一个。

我可以从新的查询窗口查询我的数据库。但是看不到任何一个。

每当我尝试探索数据库时,我都会收到此错误:

无法打开数据库'msdb'。它通过恢复被标记为可疑。有关更多信息,请参阅SQL Server错误日志。 (Microsoft SQL Server,错误:926)。

我试过了

  1. 刷新连接
  2. 重新连接连接
  3. 重新启动服务Sql Server(MSSQLSERVER)。
  4. 重新启动SQL Server Management Studio
  5. 重启我的机器
  6. 我也试过上面的组合,但没有任何作用。

    我的操作系统是Windows 7旗舰版(64位)。

    SQL Server Management Studio版本为10.50.2500.0。

3 个答案:

答案 0 :(得分:13)

我在this链接中找到了答案。

编辑:包含来自链接的解决方案,因为将来可能会出现 Linkrot

使用sa帐户登录,以获取解决方案。

解决方案1 ​​

  1. 打开新的查询窗口

  2. EXEC sp_resetstatus 'DB_Name';(解释:sp_resetstatus关闭数据库上的可疑标志。此过程更新sys.databases中指定数据库的模式和状态列。另请注意只有具有sysadmin权限的登录才能执行此操作。)

  3. ALTER DATABASE DB_Name SET EMERGENCY;(说明:数据库设置为EMERGENCY模式后,它将成为READ_ONLY副本,只有sysadmin固定服务器角色的成员才有权访问它。)

  4. DBCC checkdb('DB_Name');(说明:检查所有对象之间的完整性。)

  5. ALTER DATABASE DB_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE;(说明:将数据库设置为单用户模式。)

  6. DBCC CheckDB ('DB_Name', REPAIR_ALLOW_DATA_LOSS);(说明:修复错误)

  7. ALTER DATABASE DB_Name SET MULTI_USER;(说明:将数据库设置为多用户模式,以便其他人可以访问它。)

  8. 解决方案2

    1. 在对象资源管理器中 - >打开的连接项 - > rightclick - >停止 Object Explorer

    2. 打开控制面板 - >管理工具 - >服务 Control Panel -> Administrative Tools -> Services

    3. 从服务中选择Sql Server (MSSQLSERVER)项目 - > rightclick - >停止 Stop Sql Server (MSSQLSERVER)

    4. 打开C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

    5. 移动MSDBData.mdf& MSDBlog.ldf到任何其他地方

    6. 然后从新位置再次复制此文件并将其放在旧位置

      C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

    7. 在对象资源管理器中打开连接 - > rightclick - >开始

    8. 然后刷新数据库。

    9. 然后您可以分离MSDB文件

    10. 第二种解决方案对我有用。

      注意:我必须从其他工作机器获取“msdb”数据库mdf和ldf文件才能使其正常工作。

答案 1 :(得分:0)

立即修复我的问题是替换现有的MSDBData.mdf& MSDBlog.ldf文件

在C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA中。我从另一台工作机器上复制了这两个文件,停止在我的机器上运行的SQL服务,从他们的位置删除了上面现有的2个文件并添加了新的2个复制文件。一旦我重新启动服务,问题就得到了解决。

答案 2 :(得分:0)

试试这个

  • 将数据库设置为单用户模式:

    更改数据库 dbname set single_user

  • 现在将数据库设置为紧急模式:

    更改数据库 dbname 设置紧急情况

  • 修复丢失的日志文件或因数据丢失而损坏的日志文件。

    DBCC CHECKDB ('dbname', REAPIR_ALLOW_DATA_LOSS)

  • 现在将数据库设置为多用户模式;

    Alter database dbname set multi_user

使用此命令可能会丢失数据。这也取决于客户的批准。为避免这种情况,您可以使用其他一些专用软件 ( As Mentioned here ) 从可疑模式中恢复。