资源数据库也称为资源DB或RDB,是SQL Server中隐藏的只读数据库。与其他关系数据库软件一样,SQL Server支持结构化查询语言 (SQL) 用于处理关系数据库,主要界面工具是SQL Server Management Studio (SSMS),可以在32位和64位系统中运行。
资源数据库,也称为资源 DB 或 RDB,是 SQL Server 中隐藏的只读数据库。Microsoft SQL Server 是由 Microsoft 创建和销售的关系数据库管理系统 (RDBMS)。与其他关系数据库软件一样,SQL Server 支持结构化查询语言 (SQL) 用于处理关系数据库。SQL Server 的主要界面工具是 SQL Server Management Studio (SSMS),它可以在 32 位和 64 位系统中运行。
资源数据库是第五个数据库。它补充了主数据库,因为 SQL Server 现在依赖它。它包含 SQL Server 2005 及更高版本中包含的所有系统对象。诸如 sys.objects 之类的系统对象在物理上存储在资源数据库中,但它们在逻辑上也存在于每个数据库的 sys 模式中。
资源数据库只能保存系统对象,不能存储用户数据或元数据。存储过程、目录视图和扩展过程是存储在资源数据库中的预创建系统 T-SQL 代码的示例。
资源数据库的实际名称是 mssqlsystemresource。资源数据库有一个数据文件和一个日志文件,分别名为 mssqlsystemresource.mdf 和 mssqlsystemresource.ldf,默认位于<drive letter>:Program FilesMicrosoft SQL ServerMSSQL<version num>。<实例名称>MSSQLBinn。
资源数据库简化并加速了升级到新版本 SQL Server 的过程。以前,更新 SQL Server 涉及删除和重新创建系统对象。由于资源数据库文件包含所有系统对象,管理员可以通过简单地将资源数据库文件(mssqlsystemresource.mdf 和 mssqlsystemresource.ldf)传输到本地服务器来进行更新。
为什么资源数据库很重要?
资源数据库的主要目标是尽可能快速有效地更新服务器。因为所有系统对象都存在于资源数据库中,所以数据库管理员 (DBA)可以在升级期间用新的资源数据库文件覆盖以前的资源数据库文件。
此操作将更新数据库中的所有系统对象。在早期版本的 SQL Server 中,所有系统对象都必须在升级过程中被丢弃并重新创建,这非常耗时。此外,如果任何对象丢失或导致问题,设置将失败。
资源数据库的最佳实践
SQL Server 2000 及以前的版本中没有资源数据库。它在 SQL Server 2005 中首次引入,使升级更容易和更快。数据库中的每个 SQL Server 实例都有一个 ID。单个实例最多可以存储 32767 个数据库,这也是资源库 ID,每个实例中的每个资源库都一样。结果,资源数据库被赋予实例的最大可能数据库 ID。
由于资源库的隐藏状态,很多人并不知道资源库的存在。一些 DBA 认为,由于这是一个数据库,它需要与传统数据库相同级别的维护,这是不完全正确的。这可能会在未来导致更多问题。
以下是使用资源数据库时要遵循的一些最佳实践:
避免移动资源数据库文件。虽然存在用于传输其他系统数据库的文件的特殊过程,但不接受也不建议更改资源数据库的文件位置。升级 SQL Server 可能会导致安装新的资源数据库,该数据库将其文件永久存储在此固定位置。与备份保持一致以恢复资源数据库。无法使用用于 SQL Server 中其他数据库的典型备份和还原过程来备份或还原资源数据库,因为无法使用 SQL Server 工具访问它。即使资源数据库的数据文件扩展名为 .mdf,也可以将其视为 .exe 文件。管理员可以使用此方法创建基于文件或基于磁盘的备份。使用资源数据库将服务包应用到多个实例。DBA 必须将 mssqlsystemresource.mdf 和 mssqlsystemresource.ldf 文件复制到目标实例,以将服务包管理到多个实例。使用资源数据库回滚更改。如果 DBA 需要撤消服务包所做的更改,管理员必须将 .mdf 和 .ldf 文件替换为以前备份版本中的文件。