SQL Server服务器的配置选项属于那种人们了解较少且经常误用的选项。当一个技术支持人员要求你按照某种方式调整一个选项、而另一个技术支持人员却要求你按照另一种完全对立的方式调整同一个选项时,你可能对这些选项的真正含义感到困惑。有关这些选项的资料很缺乏,至少可以说不够详细和清楚。在SQL Server 2000中,Microsoft减少了几个配置选项,让SQL Server动态配置它们,从而减少了几个容易混淆的地方。同时,Microsoft又为SQL Server 2000新增了两个服务器配置选项,调整了一些数据库选项,从而稍许简化了数据库管理员的工作。
新增的服务器选项 就象访问大多数企业版服务器的属性一样,我们不能在SQL Server Enterprise Manager中通过服务器属性窗口访问SQL Server 2000新增的两个服务器选项。作为防止用户由于不小心而错误配置服务器的一个安全措施,Microsoft没有把这些高级配置选项放入Enterprise Manager。相反,我们必须使用T-SQL/sp_configure系统存储过程去访问这些高级选项。我们可以用不带参数运行sp_configure的方法查看服务器的当前配置。在执行结果中,config_value是SQL Server从Master数据库syscurconfigs表提取出来的数据,它显示了服务器的当前配置;run_value列显示了执行sp_configure时SQL Server正在使用的选项,SQL Server在sysconfigures表中存储这些数据。修改某个选项之后,我们必须执行RECONFIGURE命令(在大多数情况下,还要重新启动SQL Server)才能让新的run_value显示出来。本文所讨论的所有选项都要求重新启动SQL Server。
不过,启用awe enabled选项也有副作用。启用awe enabled选项之后,SQL Server不再动态地分配内存。由于缺乏内存动态分配功能,管理负担随之增加,因为我们必须仔细地监视RAM使用情况。另外,设置awe enabled选项之后,我们还必须设置max server memory选项。如果我们不设置max server memory选项,服务器RAM又等于最低要求3GB,SQL Server将在启动的时候占据机器上几乎所有的RAM,只给Windows和其他应用留下128 MB的RAM。通过设置max server memory选项,我们可以限制SQL Server使用的内存总量。
awe enabled选项只能在SQL Server 2000 Enterprise Edition上使用,操作系统必须是Windows 2000 Advance Server或Datacenter。如果你在SQL Server的其他版本上使用这个选项(或者操作系统是WinNT),SQL Server将忽略这个选项。在某些服务器配置组合下,不适当地配置这个选项将导致不可预知的结果。例如,如果我们在Windows 98操作系统、运行SQL Server Personal Edition的机器上设置这个选项,SQL Server可能报告它已经停止(甚至是在它正在运行的时候),而且它将拒绝停止SQL Server实例。
减少的服务器选项 在SQL Server 2000中,Microsoft减少了原有的几个选项,让SQL Server 2000自动配置这些选项。减少的选项中最引人注目的是max async IO选项。这个选项允许数据库管理员指定在单一的数据库文件上可以出现多少异步的磁盘读取和写入操作。SQL Server 7.0中的max async IO选项是人们了解最少的选项之一,它的默认值是32,但很少有管理员去调整这个值。在SQL Server 2000中,这个异步IO选项随着SQL Server接收的适配器反馈信息动态地上升或者下降,SQL Server利用反馈算法确定服务器负载以及SQL Server系统能够控制的数量。
数据库选项 在SQL Server 2000中,如果你曾经查看过Enterprise Manager中数据库的Options选项卡,你可能会对一些通用选项的消失感到困惑(要访问Options选项卡,在Enterprise Manager中右击数据库然后选择Properties)。Options选项卡中减少了trunc. log on chkpt.以及Select Into/Bulk Copy这两个选项,如图1所示。为了清楚和向后兼容起见,这些通用选项现在称为recovery model(恢复模型)选项。如果用SQL Server 2000的Enterprise Manager连接SQL Server 7.0数据库,我们仍旧可以看到这些老选项。 以前,我们使用下面的命令为Northwind数据库开启trunc. log on chkpt.选项:
SP_DBOPTION Northwind ,'trunc. log on chkpt.', true
为了便于使用,Microsoft把trunc. log on chkpt.和Select Into/Bulk Copy选项换成了恢复模型设置。这种选项改变的目的在于确保数据库管理员能够充分理解在灾难恢复策略中恢复模型选项的意义。SQL Server 2000为我们提供了三种数据库恢复模型:simple(简单恢复),full(完全恢复),bulk_logged(大容量日志记录恢复)。
简单恢复模型最容易操作,但它是最缺乏灵活性的灾难恢复策略。选择简单恢复模型等同于把trunc. log on chkpt.设置成true。在这种恢复模型下,我们只能进行完全备份和差异备份(differential backup):这是因为事务日志总是被截断,事务日志备份不可用。一般地,对于一个包含关键性数据的系统,我们不应该选择简单恢复模型,因为它不能够帮助我们把系统还原到故障点。使用这种恢复模型时,我们最多只能把系统恢复到最后一次成功进行完全备份和差异备份的状态。进行恢复时,我们首先要恢复最后一次成功进行的完全备份,然后在此基础上恢复差异备份(差异备份只能把自从数据库最后一次完全备份之后对数据库的改动施加到数据库上)。
完全恢复模型把trunc. log on chkpt.选项和Select Into/Bulk Copy选项都设置成false。完全恢复具有把数据库恢复到故障点或特定即时点的能力。对于保护那些包含关键性数据的环境来说,这种模型很理想,但它提高了设备和管理的代价,因为如果数据库访问比较频繁的话,系统将很快产生庞大的事务日志记录。由于在这种模型中Select Into/Bulk Copy设置成了false,SQL Server将记录包括大容量数据装入在内的所有事件。