资源数据库是一个只读数据库,其中包含 SQL Server 附带的所有系统对象。 SQL Server 系统对象(如 sys.objects)在资源数据库中以物理方式持久保存,但它们在逻辑上显示在每个数据库的 sys 架构中。 资源数据库不包含用户数据或用户元数据。
资源数据库使升级到新版本的 SQL Server 的过程更加简单快捷。 在早期版本的 SQL Server 中,升级需要删除和创建系统对象。 由于 Resource 数据库文件包含所有系统对象,因此现在只需将单个资源数据库文件复制到本地服务器即可完成升级。
资源的物理属性
资源数据库的物理文件名mssqlsystemresource.mdf和 mssqlsystemresource.ldf。 这些文件位于 <drive>:\Program Files\Microsoft SQL Server\MSSQL<版本>。<instance_name>\MSSQL\Binn\ 且不应移动。 SQL Server 的每个实例都有一个且只有一个关联的mssqlsystemresource.mdf文件,实例不共享此文件。
警告
升级和服务包有时会提供安装到 BINN 文件夹的新资源数据库。 不支持或建议更改资源数据库的位置。
备份和还原资源数据库
SQL Server 无法备份资源数据库。 可以通过将mssqlsystemresource.mdf文件视为二进制文件(.EXE)文件(而不是数据库文件)来执行自己的基于文件的备份或基于磁盘的备份,但不能使用 SQL Server 还原备份。 只能手动还原mssqlsystemresource.mdf的备份副本,并且必须小心不要使用过期或可能不安全的版本覆盖当前资源数据库。
重要
还原mssqlsystemresource.mdf备份后,必须重新应用任何后续更新。
访问资源数据库
资源数据库只能由Microsoft客户支持服务(CSS)专家修改,或在其指导下进行修改。 资源数据库的 ID 始终为 32767。 与资源数据库关联的其他重要值是版本号和上次更新数据库的时间。
确定资源数据库的版本号,使用以下方法:
SELECT SERVERPROPERTY('ResourceVersion');
GO
要确定资源数据库最后一次更新的时间,请使用:
SELECT SERVERPROPERTY('ResourceLastUpdateDateTime');
GO
若要访问系统对象的 SQL 定义,请使用OBJECT_DEFINITION函数:
SELECT OBJECT_DEFINITION(OBJECT_ID('sys.objects'));
GO