SQL Server 2012笔记分享-38:了解系统数据库

master 数据库

记录 SQL Server 实例的所有系统级信息。

master 数据库记录 SQL Server 系统的所有系统级信息。这包括实例范围的元数据(例如登录帐户)、端点、链接服务器和系统配置设置。此外,master 数据库还记录了所有其他数据库的存在、数据库文件的位置以及 SQL Server 的初始化信息。因此,如果 master 数据库不可用,则 SQL Server 无法启动。在 SQL Server 中,系统对象不再存储在 master 数据库中,而是存储在 Resource 数据库中。

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

使用 master 数据库时,请考虑下列建议:

  1. 始终有一个 master 数据库的当前备份可用。
  2. 执行下列操作后,尽快备份 master 数据库:
  3. 创建、修改或删除任意数据库
  4. 更改服务器或数据库的配置值
  5. 修改或添加登录帐户
  6. 不要在 master 中创建用户对象。否则,必须更频繁地备份 master。
  7. 不要针对 master 数据库将 TRUSTWORTHY 选项设置为 ON。

不能在 master 数据库中执行下列操作:

  1. 添加文件或文件组。
  2. 更改排序规则。默认排序规则为服务器排序规则。
  3. 更改数据库所有者。master 归 dbo 所有。
  4. 创建全文目录或全文索引。
  5. 在数据库的系统表上创建触发器。
  6. 删除数据库。
  7. 从数据库中删除 guest 用户。
  8. 启用变更数据捕获。
  9. 参与数据库镜像。
  10. 删除主文件组、主数据文件或日志文件。
  11. 重命名数据库或主文件组。
  12. 将数据库设置为 OFFLINE。
  13. 将数据库或主文件组设置为 READ_ONLY。

   

===============================================================

msdb 数据库

用于 SQL Server 代理计划警报和作业。

msdb 数据库由 SQL Server 代理用于计划警报和作业,也可以由其他功能(如 Service Broker 和数据库邮件)使用。

不能在 msdb 数据库中执行下列操作:

  1. 更改排序规则。默认排序规则为服务器排序规则。
  2. 删除数据库。
  3. 从数据库中删除 guest 用户。
  4. 启用变更数据捕获。
  5. 参与数据库镜像。
  6. 删除主文件组、主数据文件或日志文件。
  7. 重命名数据库或主文件组。
  8. 将数据库设置为 OFFLINE。
  9. 将主文件组设置为 READ_ONLY。

===============================================================

   

model 数据库

用作 SQL Server 实例上创建的所有数据库的模板。对 model 数据库进行的修改(如数据库大小、排序规则、恢复模式和其他数据库选项)将应用于以后创建的所有数据库。

model 数据库用作在 SQL Server 实例上创建的所有数据库的模板。因为每次启动 SQL Server 时都会创建 tempdb,所以 model 数据库必须始终存在于 SQL Server 系统中。

   

model 的用法

   

当发出 CREATE DATABASE 语句时,将通过复制 model 数据库中的内容来创建数据库的第一部分,然后用空页填充新数据库的剩余部分。

如果修改 model 数据库,之后创建的所有数据库都将继承这些修改。例如,可以设置权限或数据库选项或者添加对象,例如,表、函数或存储过程。

=====================================================================

   

Resource 数据库

一个只读数据库,包含 SQL Server 包括的系统对象。系统对象在物理上保留在 Resource 数据库中,但在逻辑上显示在每个数据库的 sys 架构中。

Resource 数据库取决于 master 数据库的位置。如果移动了 master 数据库,则必须将 Resource 数据库移动到同一个位置。

Resource 数据库可比较轻松快捷地升级到新的 SQL Server 版本。在早期版本的 SQL Server 中,进行升级需要删除和创建系统对象。由于 Resource 数据库文件包含所有系统对象,因此,现在仅通过将单个 Resource 数据库文件复制到本地服务器便可完成升级。

Resource 数据库的物理文件名为 mssqlsystemresource.mdf 和 mssqlsystemresource.ldf。这些文件位于 <驱动器>:\Program Files\Microsoft SQL Server\MSSQL10_50.<instance_name>\MSSQL\Binn\ 中。每个 SQL Server 实例都具有一个(也是唯一的一个)关联的 mssqlsystemresource.mdf 文件,并且实例间不共享此文件。

SQL Server 不能备份 Resource 数据库。通过将 mssqlsystemresource.mdf 文件作为二进制 (.EXE) 文件而不是作为数据库文件,可以执行您自己的基于文件的备份或基于磁盘的备份,但是不能使用 SQL Server 还原数据库。只能手动还原 mssqlsystemresource.mdf 的备份副本,并且必须谨慎,不要使用过时版本或可能不安全的版本覆盖当前的 Resource 数据库。

如何访问resource数据库,可以参考SQL 2012的联机文档。

=====================================================================

   

tempdb 数据库

一个工作空间,用于保存临时对象或中间结果集。

tempdb 系统数据库是一个全局资源,可供连接到 SQL Server 实例的所有用户使用,并可用于保存下列各项:

  1. 显式创建的临时用户对象,例如全局或局部临时表、临时存储过程、表变量或游标。
  2. SQL Server 数据库引擎创建的内部对象,例如,用于存储假脱机或排序的中间结果的工作表。
  3. 由使用已提交读(使用行版本控制隔离或快照隔离事务)的数据库中数据修改事务生成的行版本。
  4. 由数据修改事务为实现联机索引操作、多个活动的结果集 (MARS) 以及 AFTER 触发器等功能而生成的行版本。

tempdb 中的操作是最小日志记录操作。这将使事务产生回滚。每次启动 SQL Server 时都会重新创建 tempdb,从而在系统启动时总是保持一个干净的数据库副本。在断开联接时会自动删除临时表和存储过程,并且在系统关闭后没有活动连接。因此 tempdb 中不会有什么内容从一个 SQL Server 会话保存到另一个会话。不允许对 tempdb 进行备份和还原操作。

=====================================================================

修改系统数据

SQL Server 不支持用户直接更新系统对象(如系统表、系统存储过程和目录视图)中的信息。实际上,SQL Server 提供了一整套管理工具,用户可以使用这些工具充分管理他们的系统以及数据库中的所有用户和对象。其中包括:

  1. 管理实用工具,如 SQL Server Management Studio。
  2. SQL-SMO API。此工具使程序员获得在其应用程序中管理 SQL Server 的全部功能。
  3. Transact-SQL 脚本和存储过程。它们可以使用系统存储过程和 Transact-SQL DDL 语句。

这些工具保护应用程序不受系统对象更改的影响。例如,SQL Server 有时需要更改 SQL Server 新版本中的系统表,以支持添加到该版本中的新功能。但应用程序在发出直接引用系统表的 SELECT 语句时,通常依赖于旧的系统表格式。站点可能在重写从系统表中进行选择的应用程序之后,才能升级到 SQL Server 的新版本。SQL Server 考虑了系统存储过程、DDL 和 SQL-SMO 发布的接口,力求维持这些接口的向后兼容性。

SQL Server 不支持对系统表定义触发器,因为触发器可能会更改系统的操作。

======================================================================

SQL Server 2012笔记分享-38:了解系统数据库,布布扣,bubuko.com

时间: 2024-10-26 18:31:06

SQL Server 2012笔记分享-38:了解系统数据库的相关文章

SQL Server 2012笔记分享-51:理解系统数据库恢复

下图是一个很重要的表格,详细描述了系统数据库的备份需求,支持的恢复模式和还原的选项. master数据库:需要备份,需要在单用户模式下恢复 model数据库:需要备份,恢复数据库的方式为T3608 trace flag msdb数据库:需要备份,恢复模式默认为简单,恢复数据库的方式和恢复普通数据库一样,没有特殊要求 tempdb数据库:不需要备份,因为在实例启动的时候tempdb会重建:     详细的步骤可以参考 http://msdn.microsoft.com/zh-cn/library/

SQL Server 2012笔记分享-32:性能计数器监控SQL

需求 要求使用windows自带的性能监视器监控SQL的如下对象,并将结果保存便于日后分析. 性能对象:SQL Server databases,计数器:log file(s) size 和 datafile(s) size 性能对象:SQL Server:buffer manager,计数器:page reads/sec 性能对象:SQL Server:memory manager,计数器:total server memory(KB) ============================

SQL Server 2012笔记分享-1:SQL Server版本的演变

SQL是英文Structured Query Language的缩写,意思为结构化查询语言.SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言.SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等.目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准. SQL server版本

SQL Server 2012笔记分享-3:版本对比

SQL server 2012的版本及版本的概述如下 SQL Server 版本 Enterprise(64 位和 32 位) 提供了全面的高端数据中心功能,性能极为快捷.虚拟化不受限制,还具有端到端的商业智能 - 可为关键任务工作负荷提供较高服务级别,支持最终用户访问深层数据. Business Intelligence(64 位和 32 位) 提供了综合性平台,可支持组织构建和部署安全.可扩展且易于管理的 BI 解决方案. 它提供基于浏览器的数据浏览与可见性等卓越功能.功能强大的数据集成功能

SQL Server 2012笔记分享-55:高可用知识总结

------------------------------------------------------------------------------------------------------------- 故障转移群集 虽然群集的共享存储是单点的,但是从存储层面来看,是配置了存储的冗余的,所以也一定程度上实现了冗余. 在群集模式下,一个SQL群集实例只在一个节点上是活跃的,即同一时刻每个SQL群集实例的服务只在群集中的一个节点上是处于运行的状态 ,所以如果有多个数据库,想把数据库放

SQL Server 2012笔记分享-41:数据库整合建议

数据库整合的原则 如果有多台SQL,并且当前每台SQL的资源利用普遍不高,我们可以针对这些SQL进行整合. ========================================================= 整合方式     1)采用单个服务器多个实例部署.一个实例是一个资源使用和权限控制的边界,安全的边界:如果对权限要求比较高,独立性比较高,则可以考虑这种方式: 2)多个系统的数据库放在一个服务器的一个实例里面,这种方式管理简单:如果同一个业务组的安全管理界限比较模糊,这可以采

SQL Server 2012笔记分享-22:理解备份模式与恢复模式

SQL Server 备份和还原组件为保护存储在 SQL Server 数据库中的关键数据提供了基本安全保障. 为了最大限度地降低灾难性数据丢失的风险,您需要定期备份数据库以保留对数据所做的修改. 规划良好的备份和还原策略有助于防止SQL Server 2012笔记分享-22:理解备份模式与恢复模式数据库因各种故障而造成数据丢失. 通过还原一组备份,然后恢复数据库来测试您的策略,以便为有效地应对灾难做好准备. ===========================================

SQL Server 2012笔记分享-7:高可用性功能的增强

(一)数据库镜像 1.支持压缩传输 2.支持自动页修复(msdb..suspect_pages) (二)数据库群集     1.支持多子网 SQL Server 多子网故障转移群集是一种配置,其中每个故障转移群集节点都连接到其他子网或其他子网组.这些子网可以处于同一位置中,也可以位于地理上分散的站点. 跨地理上分散的站点进行群集有时称为拉伸群集. 因为没有所有节点都可以访问的共享存储,所以在多个子网上的数据存储之间应该复制数据. 对于数据复制,有多个可用数据的副本. 因此,多子网故障转移群集除了

SQL Server 2012笔记分享-9:理解列存储索引

优点和使用场景 SQL Server 内存中列存储索引通过使用基于列的数据存储和基于列的查询处理来存储和管理数据. 列存储索引适合于主要执行大容量加载和只读查询的数据仓库工作负荷. 与传统面向行的存储方式相比,使用列存储索引存档可最多提高 10 倍查询性能,与使用非压缩数据大小相比,可提供多达 7 倍数据压缩率. SQL 2012和SQL 2014列存储索引的比较 在SQL server 2012中,一旦启用了列存储索引,将不能够对已启用列存储索引的数据存储执行变更写入操作,也就是说列存储索引适