Microsoft SQL Server/系统数据库
本章将介绍每个 Microsoft SQL Server 实例安装时所带的系统数据库的作用。
当您安装 Microsoft SQL Server 时,五个系统数据库会自动创建在每个 SQL Server 实例上。这些系统数据库允许数据库引擎和管理应用程序正确地管理系统。
- Resource (仅限 SQL Server 2005 及更高版本)
- master
- model
- msdb
- tempdb
Resource 数据库是一个只读数据库,包含所有 SQL Server 系统对象。此系统数据库不会显示在 SQL Server Management Studio 对象资源管理器中,因此用户可能不知道它。与 Resource 数据库的交互是间接的,通过引用这些对象的 master 数据库系统视图和函数进行。由于 Resource 数据库是只读的,因此只有在 SQL Server 实例上安装 SQL Server 修补程序、Service Pack 或升级时,系统才会对其进行修改。Resource 数据库仅与 SQL Server 2005 及更高版本一起安装。
master 数据库记录 SQL Server 实例的服务器范围配置信息,包括所有登录和数据库引擎配置默认值。master 数据库存储元数据,包括对实例上所有其他数据库的引用。该数据库记录 SQL Server 的初始化信息,如果 master 数据库丢失、损坏或无法访问,则 SQL Server 实例无法启动。在 SQL Server 2005 之前,所有系统对象都存储在 master 数据库中。从 SQL Server 2005 开始,master 数据库通过引用只读 Resource 数据库的视图、函数和存储过程提供对系统对象的访问。
tempdb 数据库被认为是所有连接和所有用户都可以访问的全局资源。tempdb 数据库保存用户创建的临时数据库对象,例如临时表和临时存储过程。该数据库也被数据库引擎大量使用,用于序列化中间结果,并保存处理期间生成的其它临时数据和对象。tempdb 会在 SQL Server 服务首次启动时被重新创建。由于 tempdb 被系统大量使用,因此许多系统范围的性能优化必须集中在使 tempdb 尽可能高效。
model 数据库是实例上所有新创建数据库的模板。当创建一个数据库时,它被初始化为 model 数据库的副本,然后根据创建时的指定大小和设置进行修改。model 数据库中的任何对象都会自动复制到新数据库中。为此,一些数据库管理员 (DBA) 在 model 数据库中创建他们希望存在于所有新创建数据库中的函数或其它数据库对象。
在 SQL Server 2005 之前,数据库初始化过程需要在创建数据库时分配并清除所有页面(“零填充”)。从 SQL Server 2005 开始,使用“即时初始化功能”通过在分配新数据页面时跳过零填充来提高性能。
tempdb 数据库在每次启动 SQL Server 时都会从 model 数据库的副本中重新创建,因此 model 数据库必须始终存在于 SQL Server 系统上。
msdb 数据库是一个系统数据库,用于存储 SQL Server 功能和应用程序的配置和处理数据以及元数据,包括 SQL Server 代理(作业计划和警报)、SQL Server Integration Services (ETL 包)、数据库邮件和 Service Broker。
以下是一项获取所有服务器数据库大小的请求
EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_spaceused'
SQL Server 会在每个服务器实例中安装五个系统数据库:Resource(仅限 SQL Server 2005 及更高版本)、master、tempdb、model 和 msdb。每个数据库都为 SQL Server 实例提供一组特定的系统范围功能,包括访问服务器范围的配置元数据、实用程序配置和处理数据,以及创建和利用临时对象的能力。