【问题标题】:Database MSDB can not be opened无法打开数据库 MSDB
【发布时间】:2013-04-20 05:07:04
【问题描述】:

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

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

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

无法打开数据库“msdb”。它已被恢复标记为可疑。有关详细信息,请参阅 SQL Server 错误日志。 (Microsoft SQL Server,错误:926)。

我试过了

  1. 刷新连接
  2. 重新连接连接
  3. 正在重新启动服务 Sql Server (MSSQLSERVER)。
  4. 重新启动 SQL Server Management Studio
  5. 重新启动我的机器

我也尝试了以上的组合,但没有任何效果。

我的操作系统是 Windows 7 Ultimate(64 位)。

SQL Server Management Studio 版本为 10.50.2500.0。

【问题讨论】:

    标签: sql-server-2008-r2 ssms


    【解决方案1】:

    我在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;(说明:将数据库设置为多用户模式,以便其他人可以访问。)

    解决方案 2

    1. 在对象资源管理器中 --> 打开的连接项 --> 右键单击​​ --> 停止

    2. 打开控制面板 --> 管理工具 --> 服务

    3. 从服务中选择 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. 在对象资源管理器中打开的连接中 --> 右键单击​​ --> 开始

    8. 然后刷新数据库。

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

    第二个解决方案对我有用。

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

    【讨论】:

    • 请注意,msdb 包含 SQL 代理运行的作业。如果您只是从任何 SQL Server 获取这些 .ldf 和 .mdf 文件,您将丢失此信息。最好的办法是从任何其他工作机器复制 msdb 文件,并从有问题的实例的最近备份中恢复 MSDB,最好是在事件发生之前。
    • G8 。当我的客户为此打电话给我时。我到处都能找到,但没有得到答案。最后你为我工作。感谢这个 g8 工作
    【解决方案2】:

    立即解决我的问题是替换现有的 MSDBData.mdf 和 MSDBlog.ldf 文件

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

    【讨论】:

      【解决方案3】:

      试试这个

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

        更改数据库 dbname set single_user

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

        Alter database dbname set Emergency

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

        DBCC CHECKDB('dbname',REAPIR_ALLOW_DATA_LOSS)

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

        Alter database dbname set multi_user

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

      【讨论】:

        猜你喜欢
        • 2011-03-23
        • 1970-01-01
        • 2018-02-05
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多