Microsoft SQL Server/System databases

维基教科书,自由的教学读本

SQL Server每个服务器实例都安装了4个系统数据库: master, tempdb, model, msdb. 提供了服务器端配置元数据,工具配置和处理数据,创建和利用临时对象的能力。

master[1][编辑]

master数据库记录SQL Server实例的服务器范围配置信息,包括所有登录名和数据库引擎配置默认值。master数据库存储元数据,包括对实例上所有其他数据库的引用。此数据库记录 SQL Server 的初始化信息,如果master数据库丢失、损坏或不可用,SQL Server实例将无法启动。 在 SQL Server 2005 之前,所有系统对象都存储在master数据库中。 从 SQL Server 2005 开始,主数据库通过引用只读的“资源数据库”的视图、函数和存储过程提供对系统对象的访问。

tempdb[2][编辑]

tempdb数据库被视为所有连接和所有用户都可以访问的“全局资源”。tempdb数据库保存用户创建的临时数据库对象,例如临时表和临时存储过程。数据库引擎也大量使用该数据库来序列化中间结果并保存在处理期间生成的其他临时数据和对象。Tempdb在SQL Server服务首次启动时重新创建。由于系统大量使用tempdb,因此许多系统范围的性能优化必然集中在使tempdb尽可能高效上。

model[3][编辑]

模型数据库是在服务器实例上所有新创建的数据库的模板。创建数据库时,它被初始化为模型数据库的副本,然后修改为创建时指定的正确大小和设置。模型数据库中的任何对象都会自动复制到新数据库中。出于这个原因,一些数据库管理员(DBA)在模型数据库中创建他们希望在所有新创建的数据库中存在的函数或其他数据库对象。

在SQL Server 2005之前,数据库初始化过程需要在创建数据库时分配和清除(“零填充”)所有页面。从SQL Server 2005开始,使用“即时初始化功能”通过在分配新数据页时跳过零填充来提高性能。

每次启动SQL Server时,都会从模型数据库的副本重新创建tempdb数据库,因此模型数据库必须始终存在于SQL Server系统上。

msdb[4][编辑]

msdb 数据库是一个系统数据库,用于存储SQL Server特性和应用程序的配置和处理数据以及元数据,包括SQL Server代理(作业计划和警报)、SQL Server 集成服务(ETL 包)、数据库邮件和服务代理。

用途[编辑]

获取所有数据库及其好用的存储尺寸:

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_spaceused'

参考文献[编辑]

  1. master database (Microsoft Docs)
  2. tempdb database (Microsoft Docs)
  3. model database (Microsoft Docs)
  4. msdb database (Microsoft Docs)