1、 数据库 1I 兼职SQ L Se rve r管理员入门手册 作者Michael Otey译者黄思维 。 。 。 。 。 。 f 你兼管着公司的SQL Server吗?你是个SQL ser、,er门外汉吗?没关系。本文涵盖了sQL Server I j最核心、最基础的概念,是你学习SOL Server最j I 好的启蒙老师。 L。 许多中小型企业往往没有专职的D BA,于是管理 Microsoft S0L Server系统的重任就落到了Windows管理员 的身上。而SOL Sewer的管理对于一个不熟悉它的人来说 谈何容易。如果你是一个S0L Server新手并且对它无所适 从 那么无需烦恼
2、。我的两篇系列文章会告诉你所有管 理SOL Sewer的基本要领。本文重点阐述一些基础知识并 且对SOL Server的基本组件作一个简介。而在第二篇文章 (将在本刊后期刊出)中,我将介绍一些S0 L Se rve r的 必备工具,并就安全策略和备份策略的制订提一些建议。 你的系统肯定不会达到最佳的状态。默认情况下,S0 L 关键 Server安装程序会把数据库的数据文件和日志文件创建在 配置SOL Server系统首先要考虑的就是内存容量。 同一块磁盘上。然而,将这些文件分别放置在不同的盘 所有的数据库系统对内存的要求都很高,SOL Sewer也不 上显然要好得多。于是,安装完成后你应做的第
3、一件事 备512MB的内存。而更大的系统则需要大得多 C:RAID 1 E:RAlD 1 D:RAlD 5 OS,Binaries,Pagefile Log Files Data Files 的内存容量。就目前的内存价格来看,为你 的SOL Server添上1GB到2GB的内存也花不了 罄鏊 蹩 慧; 多少钱。把钱花在内存上能够显著增强服务器 的性能,从而节省了大量的排错时间并且提升 了客户端的效率。 微软尽力使SOL Server 2000易于安装和使 系统的典型磁盘配置方案 ; 用,但在某些方面,安装过程显得过于简单 了。如果你在安装时接受了所有的默认设置, 鏖70 2瞒年9舶 * 0_
4、:W inck llTP 嘲 ne鳓萌囔 季攀 维普资讯 http:/ 、 就是把数据文件和日志文件挪到不同的盘上去。当然, S Q L S e rve r内置了四个系统数据库(分别是: 前提是有足够多的磁盘。你至少需要三块盘:一块存放 m a ste r、mode r、m sdb、tempdb)和两个用户数据 系统、一块存放数据文件、另一块存放日志文件。图1 库。其中maste r数据库无疑是最重要的系统数据库。它 显示了适合于中小企业SQL Serve r系统的典型磁盘配置。 包含了其余数据库的配置信息以及登录和安全方面的信 在这个八磁盘体系中,系统、数据文件和日志文件被分 息。model
5、数据库是所有新建数据库的模板。任何新建 别放置在不同的盘上,系统和日志文件使用镜像来提供 的数据库都会继承model数据库的各种设置。msdb数据 数据冗余。数据文件使用RAID 5(具有奇偶校验的带区 库主要供SQL Server代理来存放作业调度信息,同时也负 卷)来提高存储效率。当然,从尽量保护数据的角度出 责维护备份和复制方面的信息。tempdb数据库是临时表 发你应该选择RAID 1(镜像卷)。不过,这种解决方 的存放场所。存放在tempdb中的对象只在其所有者登录 案的花费比RAID 5要高得多,因为镜像卷实际只利用了 时存在。 磁盘空间的一半,另一半用作镜像。还有,SCSI硬盘的
6、 两个用户示例数据库分别是一Pubs和No rthwind。 性能优于ID E硬盘。 Pubs数据库是一个小型的“作者一出版物”数据库,它 为了追求更好的可还原性,你应当考虑为日志文件 包含作者、书和出版商等示例信息。No rthwind数据库 做镜像。通常的做法是对日志文件使用RAID 1而对数据 和Microsoft Access中的那个No rthwind示例数据库差不 文件使用RAID 5。另外,增加一个用于追踪记录或其它 多。它是一个为虚构的Northwind Traders公司设计的定 诊断操作的磁盘也是个不错的主意。最后,出于性能和 购和销售信息数据库。尽管Northwind数据
7、库和实际使用 安全的考虑,务必将SQL Server安装在某台成员服务器上 的一些SQL Server数据库比起来不算大,但它比那个微型 而不是域控制器(D C)上。 的PUbs数据库要大很多。 接下来你要考虑的一件很重要的事情是 使用何种 如果你的任务只是管理现有的SQL Server系统而不必 身份验证模式。SQL Server提供两种验证模式Windows 创建新数据库,那么你无需对数据库对象的创建有太深 身份验证和SQL Serve r(即混合)身份验证。使用Win一 的了解。通常,你的IT部门或应用程序供应商会帮你把 dows身份验证,SQL Server把Windows用户帐号直接
8、作 该创建的都创建好。然而,对一些核心数据库对象(主 为登录凭证。而使用SQL Se rve r身份验证,则必须新建 要指:数据库、表、索引、视图、存储过程以及触发 一组专门用于SQL Server登录的帐号。尽管这两种模式各 器)作一个基本了解则无论对管理还是排错都大有益 有利弊,但我还是建议你使用Windows身份验证。它的 处。 好处是:你只需维护一组用户密码,且其它与SOL Server 数据库。数据库用来存放各种供应用程序使用的信 交互的应用程序无需再发送登录信息,所有的登录凭证 息。SQ L Se rve r的数据库中包含了众多的表、视图、索 全由Windows提供。最后,无论如何
9、你都要为sa帐号设 引和存储过程。各种应用程序一般只访问属于自己的数 一个复杂的密码。很多针对SQL Server的攻击都利用了sa 据库。单个SQL Server系统理论上可支持多达32,767个 帐号密码为空的漏洞。因此,千万不能让Sa的密码为 数据库每服务器。SQL Server的数据库有相当大的增长空 空,而且不应是“Sa”或“Pa s swo rd”这种简单易猜 间一个数据库的最大容量可达1,048,516TB。每个数据 的密码。 库至少需要两个文件:一个数据文件和一个日志文件。 数据文件包含存储在该数据库中的表、行、列的信息。 SQL Server基础知识 日志文件则记录了用户或应
10、用程序对该数据库执行的各种 当你了解了SOL Server 2000的工作原理后,你就会 操作(包括:IN SERT、U PDATE和D ELETE)。正如我 发现它其实没有想象中的那么复杂。 前面提到的那样,要想获得最佳的性能就不应把数据文 f http:www,winitproco mCn 投稿editorwinitprocornCn 维普资讯 http:/ 件和日志文件放在同一个盘上。同样的,这些文件也不 应该被放在压缩的或加密的磁盘上。 在数据库的创建过程中,SQL Server会把model数据 库作为新数据库的模板。你可以以兆为单位或百分比的 方式来设定数据库的最大增量。不过,在大
11、多数情况下 你只需启用“自动增长”功能便能让你的数据库自动地 按需增长。当然,如果你对你的应用程序很熟悉,你也 可以手动地调节数据库的大小和增长方式而不用自动增 长。 表。表是所有关系型数据库的基本存储单元。表中 包含一系列相关联的信息。例如,客户表中的每一行代 表一个特定客户的相关信息。一般包括:客户的lD号、 姓名、地址和联系方式。各个独立的信息(如:客户 的lD号)又组成了列,每个列只能存放一种类型的数 据。例如,假设客户表的第一列叫做CustomerlD并且被 定义为nt型,那么该列只能存放整数。同样的,如果 第二列CustomerName被设为va rchar(40),则它最多只能
12、容纳40个字符。 索引。使用索引最主要的目的就是提高查询的性 能。索引被创建在表中指定的列上。SQL Se rve r中有两 种索引类型:聚集索引和非聚集索引。聚集索引对表中 数据的存放顺序起决定作用。当你创建聚集索引后,SQL Server会重新组织底层表的行。每个表只能创建一个聚集 索引。非聚集索引则不会对底层表的行进行重排序,它 仅仅提供了一条优化的数据访问路径。 删除或添加索引并不影响数据库的基本结构。尽管 索引旨在提高数据检索的速度,但过多的索引反而会适 得其反。当一个索引被建立后,SQL Se rve r就必须花一 定资源来维护它(也就是不断地更新索引)。每当向表 中添加数据时,S
13、OL Server不但要完成新数据的添加,还 要负责索引的更新。不难想象,你创建的索引越多,用 于更新索引的时间就越长。太多的索引势必会对系统的 性能产生负面影响。化解这个矛盾的一个惯用伎俩是: 写一个脚本实现在批处理操作执行前删除那些影响速度的 索引,等操作完成后再用另一个脚本来重建刚才被删除 的索引。SQL Server 2000提供了一个索引调整向导,可 用于查询分析和索引推荐。 视图。视图好比一张虚拟的表或某个查询的存档。 视图里显示的数据并非来自什么特殊的数据库对象。事 实上,你是通过S E L ECT语句来创建视图的。因此,用 户打开视图时显示的内容完全是由SELECT语句决定的。
14、 视图常用于限制用户对一张或多张表中的特定行或列的访 问。你也可以用视图来连接多个表,从而把它们的内容 显示在一个表中。 存储过程和触发器。由TSQL代码编译而成的存储 过程是当今大多数数据库应用程序的支柱。触发器实际 上是一些附属于表的特殊的存储过程。由于存储过程是 已编译的,因此其执行效率要高于动态S0 L(即由应用 程序临时生成的S0 L代码)。当执行动态S0 L时,数据 库引擎首先要检验语法,随后由服务器生成一个数据访 问计划。而存储过程在其创建时就已经完成了上述工 作,因此运行时就不必重复这些步骤,可见存储过程的 执行时间要短于动态SQL。SQL Server能够智能化地缓存 查询记
15、录,它甚至能将某些动态S0L缓存一段时间,但 并不保证动态SQL在下次使用时一定被缓存。 和存储过程一样,触发器也是由TSQL创建的。但 不一样的是,存储过程允许一切符合权限的用户任意执 行,而触发器只能由数据库本身来执行。你通过CREATE T RIGG E R语句在表上创建触发器,而它们仅在该表的 INSERT、UPDATE或DELETE操作发生时才被触发。DBA 们通常用触发器来强制声明性引用完整性(DRI)。你也 可以利用表的引用关系来串联触发DELETE操作。触发器 执行前必须检查各种约束,包括DRI。 休息片刻 现在是坐下来好好总结一下的时候了。至此,你应 该基本掌握了SOL Server的内存和磁盘配置方法,对SQL Se rve r的基本组件也不再陌生了。不过,别忘了,我在 下一篇文章中将有更精彩的内容呈现给你,帮助你成为 一个合格的“兼职D BA” 维普资讯 http:/