SQL Server 维护一组系统级数据库,即ystem 数据库,这对于服务器实例的作至关重要。 每次重大更新后,必须备份多个系统数据库。 必须始终备份的系统数据库包括 msdb、 master 和 model。 如果任何数据库在服务器实例上使用复制,则还必须备份 分发 系统数据库。 通过备份这些系统数据库,可以在发生系统故障时还原和恢复 SQL Server 系统,例如硬盘丢失。
下表汇总了所有系统数据库。
系统数据库 | DESCRIPTION | 是否需要备份? | 恢复模式 | 注释 |
---|---|---|---|---|
大师 | 记录 SQL Server 系统的所有系统级别信息的数据库。 | 是的 | 简单 | 尽可能频繁地备份 主数据库 ,以充分保护数据以满足业务需求。 建议定期备份计划,在进行大量更新后,可以补充额外的备份。 |
模型 | 在 SQL Server 实例上创建的所有数据库的模板。 | 是的 | 用户可配置1 | 仅当业务需求需要时才备份 模型 ;例如,在自定义其数据库选项后立即。 最佳做法: 建议仅根据需要创建 模型的完整数据库备份。 由于 模型 很小且很少发生更改,因此不需要备份日志。 |
msdb | SQL Server 代理用于安排警报和任务以及记录管理员的数据库。 msdb 还包含历史记录表,例如备份和还原历史记录表。 | 是的 | 简单(默认值) | 每次更新 msdb 后都要备份。 |
资源 (RDB) | 一个只读数据库,其中包含随 SQL Server 一起提供的所有系统对象的副本 | 否 | - |
资源数据库驻留在仅包含代码的 mssqlsystemresource.mdf 文件中。 因此,SQL Server 无法备份 资源 数据库。 注意:可以通过将文件视为二进制文件(.exe)文件而不是数据库文件,对mssqlsystemresource.mdf文件执行基于文件的备份或基于磁盘的备份。 但是,不能对备份使用 SQL Server 还原。 只能手动还原mssqlsystemresource.mdf的备份副本,并且必须小心不要使用过期或可能不安全的版本覆盖当前 资源 数据库。 |
tempdb | 用于保存临时或中间结果集的工作区。 每次启动 SQL Server 实例时,都会重新创建此数据库。 关闭服务器实例后, tempdb 中的任何数据将永久删除。 | 否 | 简单 | 无法备份 tempdb 系统数据库。 |
配置分发 | 仅当服务器配置为复制分发服务器时,该数据库才存在。 此数据库存储所有类型复制的元数据和历史数据,以及用于事务复制的事务。 | 是的 | 简单 | 有关何时备份 分发 数据库的信息,请参阅 备份和还原复制的数据库。 |
1 若要了解模型的当前恢复模式,请参阅 查看或更改数据库(SQL Server) 或 sys.databases(Transact-SQL)的恢复模式。
还原系统数据库的限制
只能从当前正在运行服务器实例的 SQL Server 版本的备份还原系统数据库。 例如,若要在 SQL Server 2012 SP1 上运行的服务器实例上还原系统数据库。
若要还原任何数据库,必须运行 SQL Server 实例。 启动 SQL Server 实例需要 master 数据库可访问,至少部分可用。 如果 master 变得不可用,则可以通过以下方式之一将数据库返回到可用状态:
从当前数据库备份还原 master 。
如果可以启动服务器实例,则应能够从完整数据库备份还原 master 。
完整重建 主模板。
如果 主数据库 严重损坏导致无法启动 SQL Server,则必须重建 主数据库。 有关详细信息,请参阅 重新生成系统数据库。
重要
重新生成 主数据库 将重新生成所有系统数据库。
在某些情况下,恢复模型数据库时出现问题可能需要重新生成系统数据库或替换模型数据库的 mdf 和 ldf 文件。 有关详细信息,请参阅 重新生成系统数据库。