1

我的问题是这样的:我的机器上安装了 SqlServer 2012 的副本。它已经存在了 3 年多,完全没有任何故障。就在 4-5 天前,出现了一个问题。当我启动 Management Studio 时,它告诉我

msdb 已损坏,因此无法打开。

完整的消息是这样的:

无法在服务器级别显示策略健康状态,因为用户没有权限。此功能需要获得数据库 msdb 的权限才能正常工作。

那么这里有什么问题呢?什么突然的变化/异常可能已经使这种情况变得不稳定?有人告诉我,这可能是由于多种可能性。原因可能是任何事情。甚至一些 nuget 包也会影响数据库。最初我认为这可能是登录、权限等问题。所以我也尝试以管理员身份运行。不,它并没有解决这个问题。如果您尝试创建一个新数据库,它只会告诉我,我做不到。消息是这样的:

执行 T-SQL 语句或批处理时发生异常。[Microsoft.SqlServer.ConnectionInfo]。无法打开数据库 msdb。它已被恢复标记为可疑。[Microsoft Sql 服务器,错误:926]

我该如何从中恢复?你能给我一些指导吗?或者是在哪里寻找问题线索的线索?我所有的工作都停滞了。在恢复我生病的 sqlserver 安装方面的任何帮助都将受到欢迎。

所以,我请求你们给我指路。感谢期待。

4

2 回答 2

1

我使用以下网站上的解决方案 C 修复了我的问题。我的 MSDB 已损坏且未加载,因此我停止了服务并将其替换为 SQL Server 目录中模板中的文件。

https://www.mssqltips.com/sqlservertip/3191/how-to-recover-a-suspect-msdb-database-in-sql-server/

“模板保存在“C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\Templates”(路径因版本和安装选择而异,这是 SQL Server 2012 的默认设置)。通过关闭实例并用模板文件替换坏的 MSDB 数据 (msdbdata.mdf) 和事务日志 (msdblog.ldf) 文件我能够重新启动实例而不会出错!” (以防万一网站链接不起作用,我在这里引用了它)。

于 2016-11-04T00:06:08.793 回答
0

如果您的 MSDB 已损坏,请从您最近的备份中恢复。这是最安全的做法,这也是我们一开始就有备份的原因。

如果您没有 MSDB 的备份,您有几个选择。

  1. 重新创建它。此处的详细说明:https ://msdn.microsoft.com/en-us/library/dd207003(v=sql.110).aspx#CreateMSDB 。这是确保您获得干净、功能强大的 MSDB 的最佳方式,也是重新启动和运行的最快方式。重要提示:这样做意味着您将丢失存储在 MSDB 中的所有作业、备份历史记录等。记住在你完成后重新创建所有维护作业,否则你只是在等待下一个事情失败(例如事务日志备份不再运行,tlogs 增长直到你用完磁盘空间 - 现在你不能运行任何将提交事务的查询)。

  2. DBCC CHECKDB WITH Repair_allow_data_loss 是另一种选择,如果您搜索/解决问题,您可能会找到它。这可能有效,但不建议这样做。问题是你真的不知道会丢失什么。它的工作原理是删除无法读取的内容,然后修复链接以使数据库再次物理运行。完成后,您将不得不返回并找出仍然存在并且仍然有效的内容。这是乏味且容易出错的。此外,如果您要进行非常彻底的手动检查以确保所有作业都完好无损,那么您最好在新的、干净的 MSDB 上重新创建它们。

于 2015-09-12T01:17:35.863 回答