SQL Server服务器的配置选项属于那种人们了解较少且经常误用的选项当一个技术支持人员要求你按照某种方式调整一个选项而另一个技术支持人员却要求你按照另一种完全对立的方式调整同一个选项时你可能对这些选项的真正含义感到困惑有关这些选项的资料很缺乏至少可以说不够详细和清楚在SQL Server 中Microsoft减少了几个配置选项让SQL Server动态配置它们从而减少了几个容易混淆的地方同时Microsoft又为SQL Server 新增了两个服务器配置选项调整了一些数据库选项从而稍许简化了数据库管理员的工作
新增的服务器选项
就象访问大多数企业版服务器的属性一样我们不能在SQL Server Enterprise Manager中通过服务器属性窗口访问SQL Server 新增的两个服务器选项作为防止用户由于不小心而错误配置服务器的一个安全措施Microsoft没有把这些高级配置选项放入Enterprise Manager相反我们必须使用TSQL/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
服务器选项总共有个默认情况下sp_configure存储过程只显示其中的个显示结果中不包含高级选项而且所有新的SQL Server配置选项都不会出现在这个精简的清单中然而我们可以使用show advanced options命令参数让SQL Server显示出所有选项要启用show advanced options我们使用如下命令格式
EXEC sp_configure show advanced options RECONFIGURE
要安装一个选项我们必须在使用sp_configure配置服务器之后运行RECONFIGURE命令上面命令的输出结果如下
Configuration option show advanced options changed from to Run the RECONFIGURE command to install
一旦能够查看高级选项我们就可以看到两个新的服务器选项其中最重要的一个新选项是awe enabled选项它能够让SQL Server企业版提高服务器的内存访问能力默认情况下SQL Server能够使用的最大RAM是GB在Windows 上应用程序可以 使用Address Windowing Extensions(AWE)API访问更多的RAM例如在Windows Advanced Server中我们能够使用多达GB的内存只有Windows Datacenter Server支持GB内存才超过它显然当SQL Server拥有更多的可用内存它将能够缓沖更多的数据改善查询的响应时间
不过启用awe enabled选项也有副作用启用awe enabled选项之后SQL Server不再动态地分配内存由于缺乏内存动态分配功能管理负担随之增加因为我们必须仔细地监视RAM使用情况另外设置awe enabled选项之后我们还必须设置max server memory选项如果我们不设置max server memory选项服务器RAM又等于最低要求GBSQL Server将在启动的时候占据机器上几乎所有的RAM只给Windows和其他应用留下 MB的RAM通过设置max server memory选项我们可以限制SQL Server使用的内存总量
awe enabled选项只能在SQL Server Enterprise Edition上使用操作系统必须是Windows Advance Server或Datacenter如果你在SQL Server的其他版本上使用这个选项(或者操作系统是WinNT)SQL Server将忽略这个选项在某些服务器配置组合下不适当地配置这个选项将导致不可预知的结果例如如果我们在Windows 操作系统运行SQL Server Personal Edition的机器上设置这个选项SQL Server可能报告它已经停止(甚至是在它正在运行的时候)而且它将拒绝停止SQL Server实例
在SQL Server Enterprise Edition服务器上启用AWE包括三个步骤首先我们必须确保启动SQL Server实例的帐号具有在内存中锁定页的权限SQL Server安装时自动把页锁定权限授予我们指定用来启动SQL Server服务的Windows帐号但是如果后来这个帐号已经改变你应该检查一下已经把哪些权限授予了启动SQL Server的用户检查帐号的权限可以使用Windows 的组策略工具第二个步骤是运行sp_configure存储过程把awe enabled选项设置为然后我们必须执行RECONFIGURE用手工方式重新启动SQL Server配置命令的语法为
EXEC sp_configure awe enabled RECONFIGURE
注意在Windows 或者NT上如果要访问高于GB的物理内存我们还必须采取其他一些措施即修改bootini文件加入/pae选项
第二个新的SQL Server 选项用来启用C级安全审核模式C是一个政府安全等级它保证系统能够保护资源并具有足够的审核能力C模式允许我们监视对所有数据库实体的所有访问企图启用SQL Server的C审核功能的命令如下
EXEC sp_configure c audit mode RECONFIGURE
(要实现完整的C级安全保证Windows操作系统也必须提供相应的支持)启用C审核模式并重新启动之后SQL Server自动在\MSSQL\Data目录下面创建跟蹤文件我们可以使用SQL Server Profiler查看这些监视服务器活动的跟蹤文件
SQL Server以KB大小的块为单位把数据写入跟蹤文件因此当SQL Server非正常停止时我们最多可能丢失 KB的日志数据可以想象包含审核信息的日志文件将以很快的速度增大例如某次试验只访问了三个表跟蹤文件已经超过了MB当跟蹤文件超过MB时C审核将关闭旧文件并创建新文件每次SQL Server启动的时候它会创建一个新的跟蹤文件如果磁盘空间不足SQL Server将停止运行直至我们为审核日志释放出足够的磁盘空间并重新启动SQL Server实例在SQL Server启动的时候我们可以使用f参数禁用审核
减少的服务器选项
在SQL Server 中Microsoft减少了原有的几个选项让SQL Server 自动配置这些选项减少的选项中最引人注目的是max async IO选项这个选项允许数据库管理员指定在单一的数据库文件上可以出现多少异步的磁盘读取和写入操作SQL Server 中的max async IO选项是人们了解最少的选项之一它的默认值是但很少有管理员去调整这个值在SQL Server 中这个异步IO选项随着SQL Server接收的适配器反馈信息动态地上升或者下降SQL Server利用反馈算法确定服务器负载以及SQL Server系统能够控制的数量
数据库选项
在SQL Server 中如果你曾经查看过Enterprise Manager中数据库的Options选项卡你可能会对一些通用选项的消失感到困惑(要访问Options选项卡在Enterprise Manager中右击数据库然后选择Properties)Options选项卡中减少了trunc log on chkpt以及Select Into/Bulk Copy这两个选项如图所示为了清楚和向后兼容起见这些通用选项现在称为recovery model(恢复模型)选项如果用SQL Server 的Enterprise Manager连接SQL Server 数据库我们仍旧可以看到这些老选项
以前我们使用下面的命令为Northwind数据库开启trunc log on chkpt选项
SP_DBOPTION Northwind trunc log on chkpt true
设置好选项之后我们可以通过Options选项卡或者下面的查询检查Northwind数据库上这些选项设置是否成功
SELECT DATABASEPROPERTY (Northwind IsTruncLog)
结果为表示选项设置成了true结果为表示选项设置成了false如果结果为NULL它表示我们或者选择了一个错误的选项或者数据库不存在
为了便于使用Microsoft把trunc log on chkpt和Select Into/Bulk Copy选项换成了恢复模型设置这种选项改变的目的在于确保数据库管理员能够充分理解在灾难恢复策略中恢复模型选项的意义SQL Server 为我们提供了三种数据库恢复模型simple(简单恢复)full(完全恢复)bulk_logged(大容量日志记录恢复)
简单恢复模型最容易操作但它是最缺乏灵活性的灾难恢复策略选择简单恢复模型等同于把trunc log on chkpt设置成true在这种恢复模型下我们只能进行完全备份和差异备份(differential backup)这是因为事务日志总是被截断事务日志备份不可用一般地对于一个包含关键性数据的系统我们不应该选择简单恢复模型因为它不能够帮助我们把系统还原到故障点使用这种恢复模型时我们最多只能把系统恢复到最后一次成功进行完全备份和差异备份的状态进行恢复时我们首先要恢复最后一次成功进行的完全备份然后在此基础上恢复差异备份(差异备份只能把自从数据库最后一次完全备份之后对数据库的改动施加到数据库上)
完全恢复模型把trunc log on chkpt选项和Select Into/Bulk Copy选项都设置成false完全恢复具有把数据库恢复到故障点或特定即时点的能力对于保护那些包含关键性数据的环境来说这种模型很理想但它提高了设备和管理的代价因为如果数据库访问比较频繁的话系统将很快产生庞大的事务日志记录由于在这种模型中Select Into/Bulk Copy设置成了falseSQL Server将记录包括大容量数据装入在内的所有事件
最后一种恢复模型是大容量日志记录恢复它把tru