我在我的计算机上的SQL Server 2008 R2的本地实例中遇到此问题。这个实例上有几个数据库。但是我无法从对象资源管理器中看到它们中的任何一个。
我可以从新的查询窗口查询我的数据库。但是看不到任何一个。
每当我尝试探索数据库时,我都会收到此错误:
无法打开数据库'msdb'。它通过恢复被标记为可疑。有关更多信息,请参阅SQL Server错误日志。 (Microsoft SQL Server,错误:926)。
我试过了
我也试过上面的组合,但没有任何作用。
我的操作系统是Windows 7旗舰版(64位)。
SQL Server Management Studio版本为10.50.2500.0。
答案 0 :(得分:13)
我在this链接中找到了答案。
编辑:包含来自链接的解决方案,因为将来可能会出现 Linkrot 。
使用sa
帐户登录,以获取解决方案。
打开新的查询窗口
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;
(说明:将数据库设置为多用户模式,以便其他人可以访问它。)
在对象资源管理器中 - >打开的连接项 - > rightclick - >停止
打开控制面板 - >管理工具 - >服务
从服务中选择Sql Server (MSSQLSERVER)
项目 - > rightclick - >停止
打开C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
移动MSDBData.mdf
& MSDBlog.ldf
到任何其他地方
然后从新位置再次复制此文件并将其放在旧位置
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
在对象资源管理器中打开连接 - > rightclick - >开始
然后刷新数据库。
然后您可以分离MSDB文件
第二种解决方案对我有用。
注意:我必须从其他工作机器获取“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 ) 从可疑模式中恢复。