4.1 系统数据库
一个新的SQL Server 2005安装总是包括四个数据库:master、model、tempdb和msdb。它也包含第五个“隐藏的”数据库。我们无法使用可以列出所有数据库的一般SQL命令来看到它。这个数据库被称为resource数据库,它的实际名字是mssqlsystemresource。
master
master数据库由一些系统表组成。这些系统表跟踪作为整体的系统安装和随后创建的其他数据库。虽然每个数据库都有一组维护其包含对象信息的系统目录,但是master数据库中的一些系统目录还能够保存关于磁盘空间、文件分配和使用、系统层次的配置信息、端点、登录账号的信息,当前实例上的数据库信息和系统上其他SQL Server的存在信息(针对分布式操作)。
因为master数据库对系统来说至关重要,所以请总是保存它的一个当前备份。诸如创建另一个数据库、改变配置值和修改登录账号的操作都会修改master数据库,所以在执行过这些操作后应该备份master数据库。
Model
Model数据库只是一个模版数据库。每当我们创建一个新的数据库时,SQL Server都会复制model数据库作为新数据库的基础。如果希望每一个新的数据库在创建时都含有某些对象或者权限,可以把这些对象或权限放在model数据库中,然后所有的新数据库都会继承它们。我们也可以使用ALTER DATABASE命令来修改model数据库的大多数属性,并且新创建的所有数据库将会拥有这些属性。
tempdb
tempdb被用来作为一个工作区。它相对于SQL Server中其他数据库的独特之处在于每次SQL Server重新启动时都会重建而不是恢复它。用户显式创建的临时表,存储SQL Server在查询处理和排序时内部产生中间结果的工作表,维护用在快照隔离级别和某些其他操作的行版本,填充静态游标和键集游标的键值都会用到该数据库。因为tempdb每次都是被重建的,所以我们在其中创建的所有对象和权限在下次重启SQL Server时会全部丢失。替代方法是在tempdb复制的来源model数据库中创建对象。
因为tempdb的大小和配置对优化SQL Server的功能和性能来说都至关重要,所以我们会在本章中以独立的一节来更加详细地讨论它。
mssqlsystemresource
前面提到过,mssqlsystemresource数据库是一个隐藏的数据库,并且通常被称为resource数据库。可执行的系统对象,例如系统存储过程和函数都存储在这里。微软创建它是为了允许非常快速和安全地更新。如果没有人能够看到这个数据库,那么就没有人能够修改它,因此我们可以通过简单地置换新的resource数据库来将它升级到引入了新的系统对象的补丁Service Pack (SP)。需要注意的是即使使用所有常规的查看数据库的方法也不能看到这个数据库,例如查询sys.databases,或者执行sp_helpdb。它也不会出现在SQL Server Management Studio对象浏览器面板的系统数据库树中,它在查询窗口的可访问数据库下拉列表中也不会出现。
我们可以使用Windows浏览器在默认的数据目录中查看该数据库的文件。假设数据目录是C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data,我们可以在其中看到一个名为mssqlsystemresource.mdf的文件,它的大小为38MB,还有一个大小为0.5MB的mssqlsystemresource.ldf文件。这两个文件的创建和修改日期都是这个SQL Server实例的当前Service Pack的代码启用日期 ,最新访问日期就是今天。
如果我们非常需要“看”到mssqlsystemresource的内容,那么有一些方法可供使用。如果我们只是想看到那里有些什么,最简单方法的就是停止SQL Server,复制resource数据库的两个文件,重启SQL Server,然后附加这两个复制的文件到一个新创建的有着新名字的数据库上。我们可以使用SQL Server Management Studio的对象浏览器,或者使用CREATE DATABASE FOR ATTACH语法来创建一个克隆数据库来实现这种方法。例如:
CREATE DATABASE resource_COPY ON (NAME = data, FILENAME = |
SQL Server会像对待所有其他用户数据库一样对待这个新的resource_COPY数据库,它不会对这个数据库中的对象有任何特殊对待。如果我们想修改resource数据库,例如系统提供的系统存储过程的源代码,那么在resource_COPY数据库中修改它显然不会对该SQL Server实例有任何影响。然而,如果以单用户模式来启动SQL Server实例,我们可以发起单个的连接,并且该连接能够使用mssqlsystemresource数据库。在单用户模式启动SQL实例并不等同于设置一个数据库到单用户模式。关于如何启动SQL Server到单用户模式的细节,请参考SQL Server联机丛书的Sqlservr.exe应用程序条目。在第6章中我们讨论数据库对象时,将会讨论resource数据库中的一些对象。
msdb
SQL Server代理服务会使用msdb数据库,它会执行一些例如备份和复制任务的计划好的活动。Service Broker也会用到msdb数据库,它为SQL Server提供队列和可靠消息传递。当我们不在该数据库上执行备份和维护任务时,通常可以忽略msdb数据库(不过我们也许需要查看一下备份历史和一些保存在那里的其他信息)。因为在SQL Server Management Studio的对象浏览器中可以访问msdb中的所有信息,所以通常我们不需要直接访问该数据库中的表。我们可以把msdb数据库中的表看作另一种形式的系统表,就像我们不能直接修改系统表,我们不应该直接在msdb的表中添加或删除数据,除非我们对自己的操作有着非常透彻的理解,或者微软SQL Server技术支持工程师告诉我们去那样做。在SQL Server 2005以前,实际上是可以删除msdb数据库的,之后SQL Server仍然可用,但不能再维护任何备份历史,并且不能够再定义任务、警告、工作,或者建立复制。在SQL Server 2005中,有一个没有文档记录的跟踪标记(traceflag)允许我们删除msdb数据库,不过因为默认的msdb数据库非常小,建议即使用不到也不要删除它。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||