学了这么久数据库,你知道五大系统数据库是什么吗?


学了许久数据库的知识了,到今天我才了解到五个系统数据库是什么。在SQL sever系统中,系统运行时会用到的相关信息,如系统对象的组态设置等,都是以系统的形式存在,而存放这些系统信息的数据库成为系统数据库。成功安装SQL sever后,系统会自动建立master、model、msdb、tempdb及resource五个系统数据库。

一、master数据库

顾名思义,master是“主人,主管”的意思,数据库系统中少了它可不行。
master数据库是SQL sever系统中最重要的数据库,它记录SQL sever系统的所有系统级信息,这包括实例范围的元数据(例如登录帐户)、端点、链接服务器和系统配置设置,不过系统对象不在master数据库中,而在resource数据库中。master数据库记录了所有其他数据库的存在、数据库的文件的位置;

  • 有关master数据库的限制有:
  1. master数据库不可用,则SQLServer实例就无法启动;
  2. 不能给master数据库添加文件或文件组,不能更改master数据库的排序规则,默认是实例的排序规则;
  3. 不能删除master数据库,不能删除guest用户;
  4. 不能在master数据库创建触发器,不能启动CDC(数据变更捕获),不能参与数据库镜像,不能设置为READ_ONLY(只读),不能设置为OFFLINE(脱机);
  5. 不能更改数据库所有者,master的所有者是sa;
  6. 不能创建全文目录或全文索引;
  7. 不能删除主文件组、主数据文件或日志文件;
  8. 不能重命名数据库或主文件组;

master数据库的物理属性

下表列出了SQL Server数据库托管实例的master数据和日志文件的初始配置值。 对于不同版本的SQL Server,这些文件的大小可能略有不同。

文件 逻辑名称 物理名称 文件增长
主数据 master master.mdf 以10%的速度自动增长到磁盘充满为止
日志 mastlog mastlog.ldf 以10%的速度自动增长到最大2TB

数据库选项

下表列出了SQL Server数据库托管实例的 master 数据库中部分数据库选项的默认值,以及该选项是否可以修改。

数据库选项 默认值 是否可修改
ALLOW_SNAPSHOT_ISOLATION ON
ANSI_NULL_DEFAULT OFF
ANSI_NULLS OFF
ANSI_PADDING OFF
ANSI_WARNINGS OFF
ARITHABORT OFF
AUTO_CLOSE OFF
AUTO_CREATE_STATISTICS ON
AUTO_SHRINK OFF
AUTO_UPDATE_STATISTICS ON
AUTO_UPDATE_STATISTICS_ASYNC OFF
CHANGE_TRACKING OFF
CONCAT_NULL_YIELDS_NULL OFF
CURSOR_CLOSE_ON_COMMIT OFF

以下省略一万字……太多选项了,没有一一列举出来,毕竟作者就算写出来了也记不住,哈哈哈。若有感兴趣的在这里- >master数据库可以看到每个数据库选项。

二、model数据库

model数据库用作在SQL Server实例上创建的所有数据库的模板。
因为每次启动时都会创建tempdb SQL Server ,所以model数据库必须始终存在于SQL Server系统中。 model数据库的全部内容(包括数据库选项)都会被复制到新的数据库。 启动期间,也可使用model数据库的某些设置创建新的tempdb,因此model数据库必须始终存在于SQL Server系统中。

  • 关于model数据库的说明有:
  1. model数据库是一个模板数据库,在create database时,将通过复制model数据库中的内容来创建数据库的第一部分,然后用空页填充新数据库的剩余部分;
  2. model数据库必须存在,model数据库的全部内容都会被复制到新数据库中,例如设置的权限、数据库选项、表、函数、存储过程等等;
  3. model数据库的数据和日志文件默认初始大小为8MB;
  4. 每次系统重启创建的tempdb数据库的模板都来自于model;
  • 关于model数据库的限制有十个不能(每一点前面都省略了一个不能):
  1. 添加文件或文件组;
  2. 更改排序规则。默认排序规则为服务器排序规则;
  3. 更改数据库所有者,model的所有者是sa;
  4. 删除model数据库;
  5. 从model数据库中删除guest用户;
  6. 启用变更数据捕获;
  7. 参与数据库镜像;
  8. 删除主文件夹、主数据文件或日志文件,重命名数据库或主文件组;
  9. 将数据库设置为OFFLINE(脱机),将主文件组设置为READ_ONLY(只读);
  10. 使用 WITH ENCRYPTION 选项创建过程、视图或触发器。 加密密钥与在其中创建对象的数据库绑定在一起。 在 model 数据库中创建的加密对象只能用于 model中。

model的物理属性

下表列出了 model 数据和日志文件的初始配置值。

文件 逻辑名称 物理名称 文件增长
主数据 modeldev model.mdf 以64MB的速度自动增长到磁盘充满为止
日志 modellog modellog.ldf 以64MB的速度自动增长到最大2TB

关于model数据库的选项的默认值及该选项是否可以修改,感兴趣的可以戳这- >model数据库

三、msdb数据库

msdb数据库是代理服务数据库,为其报警、任务调度和记录操作员的操作提供存储空间。SQL Server Management Studio(是一个用于访问、配置、管理和开发SQL sever的所有组件的一个集成环境)、Service Broker和数据库邮件等其他功能也使用该数据库。
例如,SQL Server在msdb中的表中自动保留一份完整的联机备份和还原历史记录。 这些信息包括执行备份一方的名称、备份时间和用来存储备份的设备或文件。
SQL Server Management Studio使用这些信息来提出计划,还原数据库和应用任何事务日志备份。 将会记录有关所有数据库的备份事件,即使它们是由自定义应用程序或第三方工具创建的。
默认情况下msdb使用简单模式。

  • 关于msdb的限制有七个不能(每一点前面都省略了不能):
  1. 更改排序规则。 默认排序规则为服务器排序规则;
  2. 删除数据库;
  3. 从数据库中删除 guest 用户;
  4. 启用变更数据捕获;
  5. 参与数据库镜像;
  6. 删除主文件组、主数据文件或日志文件,重命名数据库或主文件组;
  7. 将数据库设置为OFFLINE,将主文件组设置为READ_ONLY。

msdb的物理属性

下表列出了 msdb 数据和日志文件的初始配置值。 对于不同版本的 SQL Server 数据库引擎,这些文件的大小可能略有不同。

文件 逻辑名称 物理名称 文件增长
主数据 MSDBDATA MADBDATA.mdf 以10%的速度自动增长到磁盘充满为止
日志 MSDBLOG MSDBLOG.ldf 以10%的速度自动增长到最大2TB

同样,关于msdb数据库的选项的默认值及该选项是否可以修改,感兴趣的可以看看- >msdb数据库

四、tempdb数据库

这个概念在作者前面的文章- >三级数据库知识点学习(一)提到过。它是一个临时数据库,是一个全局资源,可供连接到SQL sever实例或SQL数据库的所有用户使用。

tempdb用于保留:

  • 显式创建的临时用户对象,例如:全局或局部临时表及索引、临时存储过程、表变量、表值函数返回的表或游标。
  • 由数据库引擎创建的内部对象。其中包括:
    • 用于储存假脱机、游标、排序和临时大型对象 (LOB) 存储的中间结果的工作表。
    • 用于哈希联接或哈希聚合操作的工作文件。
    • 用于创建或重新生成索引等操作(如果指定了SORT_IN_TEMPDB)的中间排序结果,或者某些GROUP BY、ORDER BY或UNION查询的中间排序结果。
  • 版本存储区。是数据页的集合,它包含支持使用行版本控制的功能所需的数据行。 共有两个版本存储区:公用版本存储区和联机索引生成版本存储区。 版本存储区包含:
    • 由使用已提交读(使用行版本控制隔离或快照隔离事务)的数据库中数据修改事务生成的行版本。
    • 由数据修改事务为实现联机索引操作、多个活动的结果集 (MARS) 以及AFTER触发器等功能而生成的行版本。

关于tempdb的限制:
不能对 TempDB 数据库执行以下操作:

  1. 添加文件组;
  2. 备份或还原数据库;
  3. 更改排序规则。 默认排序规则为服务器排序规则;
  4. 更改数据库所有者。 TempDB 的所有者是 sa;
  5. 创建数据库快照;
  6. 删除数据库;
  7. 从数据库中删除 guest 用户;
  8. 启用变更数据捕获,参与数据库镜像;
  9. 删除主文件组、主数据文件或日志文件,重命名数据库或主文件组;
  10. 运行 DBCC CHECKALLOC,运行 DBCC CHECKCATALOG
  11. 将数据库设置为 OFFLINE,将数据库或主文件组设置为 READ_ONLY。

tempdb的物理属性

下表列出了 SQL Server 中 TempDB 数据和日志文件的初始配置值(基于模型数据库的默认设置)。 对于不同版本的 SQL Server,这些文件的大小可能略有不同。

文件 逻辑名称 物理名称 初始大小 文件增长
主数据 tempdev tempdb.mdf 8MB 以64MB的速度自动增长知道磁盘已满
次要数据文件* temp# tempdb_mssql_#.ndf 8MB 以64MB的速度自动增长知道磁盘已满
日志 templog templog.ldf 8MB 以 64 MB 的速度自动增长直到达到上限 2 TB

五、resource数据库

resource数据库是一个只读数据库,它包含了SQL Server中的所有系统对象,默认是隐藏的,在SSMS里看不到这个数据库。SQL Server系统对象(如 sys.objects)在物理上保留在Resource数据库中,但在逻辑上却显示在每个数据库的 sys 架构中。Resource数据库不包含用户数据或用户元数据。

  • resource的物理属性
    Resource 数据库的物理文件名为mssqlsystemresource.mdf和mssqlsystemresource.ldf。
  • 备份和还原resource数据库
    SQL Server 不能备份 Resource 数据库。 通过将mssqlsystemresource.mdf文件作为二进制文件而不是作为数据库文件,可以执行您自己的基于文件的备份或基于磁盘的备份,但是不能使用SQL Server还原所做的备份。 只能手动还原mssqlsystemresource.mdf的备份副本,并且必须谨慎,不要使用过时版本或可能不安全的版本覆盖当前的Resource数据库。
  • 访问resource数据库
    Resource 数据库仅应由 Microsoft 客户支持服务部门 (CSS) 的专家修改或在其指导下进行修改。 Resource 数据库的 ID 始终为 32767。 与 Resource 数据库相关联的其他重要值是版本号和数据库的上次更新时间。

若要确定resource数据库的版本号,命令为

SELECT SERVERPROPERTY(‘ResourceVersion’);

若要确定resource数据库的上次升级时间,命令为

SELECT SERVERPROPERTY(‘ResourceLastUpdateDateTime’);

若要访问系统对象的SQL定义,命令为

SELECT OBJECT_DEFINITION(OBJECT_ID(‘sys.objects’));

(PS:创作不易,四千多字,我在学校写一篇论文都没这么多。不过也不算创作吧,就是把自己所知道的,所查找到的资料进行一个整理,希望对大家有所帮助~)

发布了8 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44321509/article/details/104878209