Windows Server:Microsoft SQL Server MSDB 数据库恢复
Summary: 有关如何恢复 Microsoft SQL Server MSDB 数据库的信息。
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
损坏和损坏时,Microsoft SQL Server MSDB 数据库可能无法联机且无法运行。SQL Server 代理服务不会启动,并且任何计划的作业都不会自动或手动运行。
Cause
SQL Server 数据库文件损坏可能有许多不同的原因。大多数 Microsoft SQL Server 损坏的 MSDB 数据库事件是由于与内存、磁盘或处理器问题相关的硬件问题而发生的。
Resolution
有三种方法可以恢复 Microsoft SQL MSDB 数据库:
msdbdata.mdf 和 msdblog.ldf 文件是 MSDB 数据库模板文件,我们必须启动新的稳定 MSDB 数据库。
- 从备份还原
- 使用 DBCC CheckDB 修复 MSDB 数据库
- 替换 MSDB 数据库文件
从备份还原 MSDB 数据库:
使用 SQL Server Management Studio 的还原过程需要最新备份,可以通过转到“msdb”数据库的属性、 任务 >还原 >数据库 并指向备份介质的位置来执行。
使用 DBCC CheckDB 进行数据库修复:
如果没有可用的备份,我们可以运行 DBCC CheckDB 来保存当前的 MSDB 数据库及其内容。下面的 T-SQL 命令检查 MSDB 数据库的完整性。运行 MSDB 数据库的软修复,最后运行 MSDB 数据库的硬修复:
替换 MSDB 数据库文件。
如果 MSDB 数据库已损坏,并且 DBCC 修复选项不起作用,请通过替换 MSDB 数据库文件来放置新的 MSDB 数据库。
当我们替换 MSDB 数据库文件时,我们将丢失所有信息,例如自定义备份作业、任务信息、复制、日志传送和维护计划数据。
以下步骤用于将现有 MSDB 数据库替换为新的默认 MSDB 数据库。
使用 SQL Server Management Studio 的还原过程需要最新备份,可以通过转到“msdb”数据库的属性、 任务 >还原 >数据库 并指向备份介质的位置来执行。
使用 DBCC CheckDB 进行数据库修复:
如果没有可用的备份,我们可以运行 DBCC CheckDB 来保存当前的 MSDB 数据库及其内容。下面的 T-SQL 命令检查 MSDB 数据库的完整性。运行 MSDB 数据库的软修复,最后运行 MSDB 数据库的硬修复:
- MSDB 完整性检查;数据库是否未损坏?
在 SSMS 查询窗口中运行以下命令:
USE Master; GO ALTER Database MSDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (msdb, NOINDEX); GO ALTER DATABASE MSDB SET-MULTI_USER; GO我们想检查返回窗口底部报告“allocation”和“consistency”错误的行。损坏的 MSDB 数据库报告错误,并要求下面的 DBCC CHECKDB 命令进行修复。
- 用于尝试“软恢复”而不会丢失数据的 MSDB T-SQL 命令:
在 SSMS 查询窗口中运行以下命令:
USE Master; GO ALTER Database MSDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (msdb, REPAIR_REBUILD); GO ALTER DATABASE MSDB SET-MULTI_USER; GO运行上述命令后,再次运行 DBCC CheckDB 以查看数据库的新状态。
- 尝试“硬恢复”并可能丢失数据的 MSDB T-SQL 命令:
在 SSMS 查询窗口中运行以下命令:
USE Master; GO ALTER Database MSDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (msdb, REPAIR_ALLOW_DATA_LOSS); GO ALTER DATABASE MSDB SET-MULTI_USER; GO运行上述命令后,再次运行 DBCC CheckDB 以查看数据库的新状态。
替换 MSDB 数据库文件。
如果 MSDB 数据库已损坏,并且 DBCC 修复选项不起作用,请通过替换 MSDB 数据库文件来放置新的 MSDB 数据库。
当我们替换 MSDB 数据库文件时,我们将丢失所有信息,例如自定义备份作业、任务信息、复制、日志传送和维护计划数据。
以下步骤用于将现有 MSDB 数据库替换为新的默认 MSDB 数据库。
- 浏览到 SQL Server 安装目录,然后转到 Binn 目录下的 Templates 文件夹:
msdbdata.mdf 和 msdblog.ldf 文件是 MSDB 数据库模板文件,我们必须启动新的稳定 MSDB 数据库。
- 我们必须停止 SQL Server 服务以替换现有的 MSDB 数据库文件。
- 转到 SQL Server 数据目录。以下示例中的目录路径为
C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA
- 找到损坏的“msdbdata.mdf”和“msdblog.ldf”文件。
- 将文件复制并移动到另一个目录;在本例中,我们将它们移动到名为“MSDB_Save”的文件夹中。有可能将这些文件导入到另一个 SQL Server 安装中,并使用 DBCC CHECKDB 再次检查;在进行故障处理时,删除损坏的数据库文件不是最佳实践。
- 查找 MSDB 临时数据库文件的保存位置,并将其副本放回默认 SQL Server 数据库目录:
- MSDB 数据库临时文件的最终位置;返回 默认数据目录
C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA.
- 替换 MSDB 数据库文件后,启动 SQL Server 服务。
Affected Products
Microsoft Windows Server 2016, Microsoft Windows Server 2019, Microsoft Windows Server 2022, Microsoft Windows Server 2025Products
C Series, HS Series, Modular Infrastructure, Tower Servers, PowerEdge R240, PowerEdge R250, PowerEdge R260, PowerEdge R340, PowerEdge R350, PowerEdge R360, PowerEdge R440, PowerEdge R450, PowerEdge R540, PowerEdge R550, PowerEdge R640
, PowerEdge R6415, PowerEdge R650, PowerEdge R650xs, PowerEdge R6515, PowerEdge R6525, PowerEdge R660, PowerEdge R660xs, PowerEdge R6615, PowerEdge R6625, PowerEdge R740, PowerEdge R740XD, PowerEdge R740XD2, PowerEdge R7415, PowerEdge R7425, PowerEdge R750, PowerEdge R750XA, PowerEdge R750xs, PowerEdge R7515, PowerEdge R7525, PowerEdge R760, PowerEdge R760XA, PowerEdge R760xd2, PowerEdge R760xs, PowerEdge R7615, PowerEdge R7625, PowerEdge R840, PowerEdge R860, PowerEdge R940, PowerEdge R940xa, PowerEdge R960
...
Article Properties
Article Number: 000200606
Article Type: Solution
Last Modified: 05 Sep 2025
Version: 9
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.