深入 WIN2000注册表 (15) SQL Server
深入 WIN2000注册表 (15) SQL Server
SQL Server
简介
SQL Server是M i c r o s o f t向关系数据库管理系统(Relational Database Management System,
R D B M S )市场推出的竞争者,与它竞争的产品包括O r a c l e和I n f o r m i x。SQL Server运行在
Windows NT/2000服务器以及许多其它M i c r o s o f t的操作系统上。它提供了对Tr a n s a c t - S Q L的支
持,Tr a n s a c t - S Q L是与R D B M S应用程序交互的工业标准SQL(Structured Query Language,结
构化查询语言)的一个分支。SQL Server具有分布式事务处理(Distributed Tr a n s a c t i o n s )、数据
库复制(Database Replication)等许多其它强大的功能。SQL Server得到了M i c r o s o f t的A D O和
R D O数据库访问技术的支持,同时支持开放数据库连接标准(Open Database Connectivity,
O D B C )。
SQL Server的特性
除了包含其本身的特性集之外, SQL Server还允许使用其它几种功能强大的M i c r o s o f t产
品和技术:
. 使用分布式事务处理协调程序(Distributed Transaction Coordinator,D T C )进行分布式事
务处理(跨两种平台)
. 数据库复制
. We b服务器连接
. 记录N T事件
. 多种网络协议
. 支持开放数据库连接(Open Database Connectivity,O D B C )
. 使用M i c r o s o f t事务处理服务器(Microsoft Transaction Server,M T S )进行异种平台的事务
处理(使用不同的R D B M S )
ODBC
O D B C是一种允许任意开发商开发独立于数据库内部结构的应用程序的工业标准。S Q L
S e r v e r完全支持O D B C,允许它与许多不同供应商的R D B M S应用程序和组件一起工作。
ADO和RDO
A c t i v e X数据对象(ActiveX Data Objects,A D O )和远程数据对象(Remote Data Objects ,
R D O )是M i c r o s o f t当前使用的两种主要的服务技术。因为它支持O D B C,所以SQL Server对
A D O和R D O组件和应用程序是完全可访问的。
SQL Server提供的服务
SQL Server 包括几种对系统来说功能很特殊的服务,它们通常是通过企业管理器
(Enterprise Manager ,如图1 5 - 1所示)访问的。SQL Server 的企业管理器提供了对S Q L
E x e c u t i v e、S Q L - D M O和SQL Replication服务的访问。企业管理器本身是M i c r o s o f t管理控制台
( M M C )应用程序,可以与其它M M C程序(Component Services,组件服务)合并或添加到其它
M M C程序中。
1. SQL Executive
SQL Executive是管理连接、访问和SQL Server事件记录的服务应用程序。它必须为S Q L
S e r v e r其它可用的功能而运行。
2. SQL-DMO
SQL-DMO(SQL Distributed Management Objects)是具有企业级功能的SQL Server(实际上
是一个编程界面),它允许远程组件使用一个中央式的SQL Server数据库。S Q L - D M O需要在
主机和客户机上同时安装几种额外的设备才能工作。
3. SQL Replication
SQL Server可以复制其数据库以便进行备份。SQL Replication也是由SQL Executive控制
的。复制是一个涉及计划任务引擎、任务列表、同步化和预订的复杂过程。
为SQL Server的网络库配置正确的有名管道
SQL Server的E x e c u t i v e需要可信任的连接,实际上这通常意味着应使用有名管道(尽管N e t B E U I缺乏路由能力是一个问题)。当SQL Server的并行设备放置在同一台机器上时就会出现
问题—有名管道所需要配置可能已更改或丢失。下面介绍怎样更改注册表来解决这个问题:1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s
2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S O F T WARE\Microsoft\MSSQLServer\SQL Executive子项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值S e r v e r H o s t的条目。使用字符串编辑器把S e r v e r H o s t的值改为想使用的有名管
道。
解决SQL Server有名管道与Windows 9x工作站连接速度慢的问题
SQL Server使用有名管道显得很吃力,它会因为Windows 9x工作站上某个注册表设置的问题导致与该工作站之间连接的速度变慢。下面介绍怎样更改注册表来解决这个问题:
1) 在Windows 9x机器上运行R e g e d i t . e x e。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ V x D \ V N E T S U P子
项。单击该子项选取它,在右窗口中显示其值。
4) 创建一个名为D i r e c t H o s t的新值,其类型为R E G _ S Z。把D i r e c t H o s t设置0,这样可以关
闭该工作站的Direct Hosting,并解决慢速连接的问题。
增加SQL Server可用的DB-Library连接数
SQL Server为SQL Executive提供了固定数目的D B - L i b r a r y并发连接数。如果系统能够支持更多并发连接数,系统管理员可以通过修改注册表来增加这个设置:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S O F T WARE\Microsoft\MSSQLServer\SQL Executive子项。单击该子项选取它,在右窗口中显示其值。
4) 添加名为M a x D B P r o c e s s e s,类型为R E G _ D W O R D的新值。把M a x D B P r o c e s s e s的值设
为所希望的D B - L i b r a r y并发连接数。因为系统负载的原因,实际可用的数目比设置的值小3。
这项技术只对SQL Server 6.5或更高的版本起作用。
提示M a x D B P r o c e s s e s的缺省值为6 1。
防止因慢速RPC初始化而引起的SQL Server启动失败
当某台服务器的R P C (远程过程调用)服务初始化进行得很慢,而SQL Server(已配置成可使用多种协议)在R P C服务完成初始化之前就启动时,就会引起SQL Server发生故障,因为它
依赖于R P C服务。这是一个较少出现但是让人很讨厌的错误。幸运的是,对注册表进行修改可以防止出现这个问题。
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Windows 2000的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框并单击
“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ M S S Q L S e r v e r子项。
单击该子项选取它,在右窗口中显示其值。
4) 创建名为D e p e n d O n S e r v i c e,类型为R E G _ M U LT I _ S Z的新值。输入字符串R p c S s作为其
设置。重新启动服务器,问题就会得到更正。
解决SQL Server Executive服务的登录故障
SQL Server有时候会无法正确启动,这是因为E x e c u t i v e服务无法登录引起的。其中一个主要原因就是Local System Account和Administrator Group无法完全控制两个注册表项。要访
问这两个注册表可以按照下面的步骤设置注册表:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Windows 2000的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框并单击
“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ S Q L E x e c u t i v e子项。
单击该子项选取它,在右窗口中显示其值。
4) 确保Local System Account和Administrator Group对该项及其子项有完全的控制权。
5) 对S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ M S S Q L S e r v e r \ S Q L E x e c u t i v e子项重复第3步、
第4步。
解决SQL Server全部任务失败的问题
SQL Server有几种级别的任务失败,包括部分任务执行失败和全部任务执行失败。在后一种情况下,一个经常发生的问题时注册表条目与有名管道的使用冲突。要解决这种冲突,
可以按照下面的步骤修改注册表:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S O F T WARE\Microsoft\MSSQLServer\SQL Executive子项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值S e r v e r H o s t的条目。使用字符串编辑器更改其值,使它不包括服务器名称(只包括想要使用的有名管道)。
配置SQL Server Executive写一个详细的日志文件
有时候,调试SQL Executive是必须的。在这种情况下,按照如下步骤修改注册表可以让SQL Executive写一个详细的日志文件:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S O F T WARE\Microsoft\MSSQLServer\SQL Executive子项。单击该子项选取它,在右窗口中显示其值。
4) 添加一个名为Ve r b o s e F i l e,数据类型为R E G _ S Z的新值。把Ve r b o s e F i l e设置为想要使用
的日志文件的完整路径和文件名。停止并启动SQL Executive,它就会在这个位置写一个详细的日志文件,直到删除这个条目为止。
解决SQL Server Executive版本检测的故障
SQL Server的E x e c u t i v e服务有时候会发生的一个问题是:因为无法检测当前SQL Server的版本号而无法启动。这是注册表访问许可权引起的问题,可以通过赋予Local System
A c c o u n t和Administrator Group对Current Ve r s i o n注册表项完全的访问权限来解决,如下所示:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ S Q L E x e c u t i v e子项。
单击该子项选取它,在右窗口中显示其值。
4) 确保Local System Account和Administrator Group对该项及其子项有完全的控制权。
配置SQL Server异步查询过程的超时时间
所有SQL Server DB-Library异步查询过程(Asynchronous Query Processing)请求都有内置的睡眠时间。在某些情况下,这可能会对性能产生负面影响。系统管理员可以通过更改注册
表来更改睡眠时间:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ M S S Q L S e r v e r \ C l i e n t \ D B - L i b子
项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值D a t a R e a d y S l e e p的条目。使用D Wo r d编辑器设置D a t a R e a d y S l e e p的值为一个所
需要的较低的值。
提示值D a t a R e a d y S l e e p值的范围是从0到1 0 0 0,缺省值为2 5 0。设置值D a t a R e a d y
S l e e p等于0 x F F F F F F F F可以完全禁止睡眠。
警告设置值D a t a R e a d y S l e e p等于0甚至可以完全禁止异步查询过程的执行。
防止SQL Server的Web服务器连接被重设
有时候,如果SQL Server被几个客户通过T C P / I P同时请求,则会重设连接。解决这个问题的一种方法就是按照如下步骤更改注册表:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ M S S Q L S e r v e r \ M S S Q L S e r v e r子
项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值Wi n s o c k L i s t e n B a c k l o g的条目。使用D Wo r d编辑器设置Wi n s o c k L i s t e n B a c k l o g
的值为一个较高的值,直到问题不再出现为止。
提示值Wi n s o c k L i s t e n B a c k l o g的范围是从1到0 x F F F F F F F F,缺省值为1 0 0。
警告因为重设问题的本质上的原因,系统管理员可能必须不断尝试,不断出错才能为Wi n s o c k L i s t e n B a c k l o g找到一个合适的设置解决这个问题。
配置SQL Server的复制功能
在很少的情况下, SQL Server的复制功能可能会因为注册表有关分布式数据库以及其路径的条目失效或破坏而无法工作。要检查这种问题并予以解决,系统管理员必须按照如下步
骤检查注册表:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ M S S Q L S e r v e r \ R e p l i c a t i o n子项。
单击该子项选取它,在右窗口中显示其值。
4) 定位到值D i s t r i b u t i o n D B和Wo r k i n g D i r e c t o r y的条目。使用字符串编辑器确保
D i s t r i b u t i o n D B和Wo r k i n g D i r e c t o r y被设置为正确的值。
警告在出现故障时,只有手工编辑D i s t r i b u t i o n D B和Wo r k i n g D i r e c t o r y才能避免发生
不可预期的行为。