从几天前开始,当我尝试启动 SQL Server 服务时,它失败了,并且在 NT 应用程序日志中记录了以下错误:
恢复期间发生错误,导致数据库无法‘模型'(数据库 ID 3)重新启动。诊断恢复错误并修复它们,或者从已知良好的备份中恢复。如果错误未更正或不符合预期,请联系技术支持。
当主数据库正常但我无法针对数据库运行 sql 命令(或从管理工作室连接到它)时,我该如何恢复(或重建)模型数据库,因为在这种情况下 SQL Server 甚至没有启动?
我确实在备份容器/卷中有备份(所有备份都在第二个硬盘上的单个文件中)。我认为模型数据库的恢复模型是简单的。
我在文档或互联网上没有找到太多信息(例如这),正如在大多数文章中所说,要么服务实际上正在运行,以便您可以对其运行命令,要么主数据库也已损坏。
ERRORLOG 的一些选定条目:
- 尝试恢复涉及 Microsoft 分布式事务协调器 (MS DTC) 的不确定分布式事务 [...]
- 数据库‘master’的 CHECKDB 已完成,没有错误 [...]
- 启动数据库‘模型’。
- 警告:没有看到
LOP_CKPT_END
。 - 错误:3414,严重性:21,状态:2。
- 恢复期间发生错误,导致数据库“模型”(数据库 ID 3)无法重新启动。诊断恢复错误并修复它们,或者从已知良好的备份中恢复。如果错误未更正或不符合预期,请联系技术支持。
- 由于服务器关闭,SQL 跟踪已停止。跟踪 ID =“1”。[..]
Microsoft SQL Server 2005 - 9.00.4053.00,在 Windows NT 5.2(Build 3790:Service Pack 2)上
有什么想法吗?非常感谢!
答案1
由于它“仅”是模型数据库,我建议仅从工作实例复制模型数据库。在这种情况下,无需重建所有系统数据库。
答案2
启动时需要模型来创建临时数据库。没有临时数据库,引擎就无法启动。您可以从另一个具有相同版本 9.00.4053 的实例复制模型。如果您修改了模型并且想保留这些修改,您可以尝试将 mdf/ldf 复制到另一台服务器并将其附加为普通、用户、数据库以尝试修复它,然后将其复制回来。
答案3
您是否尝试过从命令行启动 SQL Server?