笔记22-徐 SQL客户端网络配置

笔记22-徐 SQL客户端网络配置

  1 --SQL客户端网络配置
  2 --客户端应用都是通过加载SQL的数据驱动程序做SQL连接的。目前客户端数据驱动库主要有3种
  3 --1、MDAC(Microsoft数据访问组件)
  4 --2、SQLSERVER Native Client
  5 --3、Microsoft JDBC Provider
  6 
  7 --1、MDAC:这个组件包括传统的ODBC和OLE DB接口,主要是为非.NET的应用服务。
  8 --这个组件历史悠久,目前一些老的程序VB VC COM还在使用他。默认Windows
  9 --自带MDAC,因此无须特别安装。如果安装SQL客户端应用工具包,则会升级到
 10 --一个更新的MDAC版本
 11 --但这个组件自SQL2000以后,没什么大的变化,无法使用SQL2005或2008中一些新功能
 12 --例如数据库镜像、使用多个活动的结果集等等。因此他是个向后兼容的版本
 13 
 14 --在cmd下运行cliconfg.exe就能够配置MDAC访问组件的网络协议SQLSERVER客户端网络实用工具
 15 --使用cliconfg.exe配置的信息保存在注册表中
 16 --对MDAC SQL2000  SQL2005  SQL2008有效
 17 --HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\下
 18 
 19 
 20 --2、SQL SERVER Native Client
 21 --SQL SERVER Native Client是在SQL2005中开始引入的用于OLE DB和ODBC的独立数据访问
 22 --应用程序编程接口(API)。SQL2005自带的是9.0版本,SQL2008自带的是10.0版本
 23 --SQL SERVER Native Client将SQLSERVER OLE DB和SQLSERVER ODBC驱动程序组合成
 24 --一个本机动态链接库(DLL)。除了Windows数据访问组件(WindowsDAC,以前为MDAC)提供
 25 --的功能外,他还提供新功能。SQL SERVER Native Client可用于创建新应用程序或增强
 26 --现有应用程序,使应用程序能够使用SQL2005中新功能,例如多个结果集MARS,用户自定义
 27 --数据类型UDT,查询通知,快照隔离和XML数据类型支持等
 28 
 29 --对于新的程序,如果使用的是.NET,如果使用SQL2005和SQL2008中的新功能,应当使用
 30 --SQL的.NET FRAMEWORK数据访问接口,该接口是VS2005的.NET FRAMIWORK的一部分。
 31 --这是为SQL2005和SQL2008提供的最强大的数据访问组件
 32 
 33 
 34 --如果开发COM程序,要使用SQL05和SQL08的新功能,应当使用SQL SERVER Native Client。
 35 --如果无须使用SQL05 SQL08的新功能,那么可以继续使用MDAC
 36 
 37 --使用新功能:SQL SERVER Native Client
 38 --无须使用新功能:MDAC
 39 
 40 --MDAC和SQL SERVER Native Client都支持行版本控制的已提交读事务隔离
 41 --SQL SERVER Native Client支持快照事务隔离
 42 --行版本控制已提交读事务隔离=已提交读事务 read committed
 43 
 44 
 45 --在一台没有安装过SQL2005和SQL2008的机器上不会安装SQL SERVER Native Client。
 46 --在安装SQL客户端工具时,会安装SQL SERVER Native Client
 47 --SQL SERVER Native Client : sqlncli.msi
 48 --就算没有安装SQL SERVER Native Client,美彬的打卡程序在我的虚拟机XP里一样可以运行
 49 --应该是服务器要有SQL SERVER Native Client或者MDAC,然后连接的话就连接服务器的
 50 --SQL SERVER Native Client或MDAC,所以客户端有没有都无关系
 51 
 52 --在配置管理器下的网络协议修改跟注册表修改是一样的
 53 --对SQL SERVER Native Client SQL2005  SQL2008有效
 54 --9.0:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0下
 55 --10.0:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI10.0下
 56 
 57 --3、Microsoft JDBC Provider
 58 --这个驱动程序专供JAVA程序使用,使用机制与MDAC和SQL SERVER Native Client不同
 59 --没有专门的网络配置界面
 60 
 61 
 62 ----------------我想C#连接SQL2000用的是MDAC----------
 63 
 64 
 65 --总结:
 66 --当一个客户端使用服务器名字和实例名来做连接时,它会先通过UDP1434向SQL Browser
 67 --通信,SQL Browser会告诉客户端它想要连接的实例的端口号和管道名字。通过这种机制
 68 --SQL的网络配置对客户端是透明的  ,关键:SQL Browser
 69 
 70 
 71 
 72 --用户连接协议选择的先后顺序:
 73 --1、连接字符串中指定
 74 --两个方法指定网络协议:
 75 --(1)server关键字
 76 --server=[protocol:]server[,port]
 77 --protocol可以是 tcp(tcp/ip)\lpc(共享内存)\np(name pipe)
 78 --示例:
 79 --np:MyServer\Myinstance
 80 --连接默认实例,逐个尝试,.NET已经使用TCP连接过去
 81 --<DataBase Value="server=jimzhang110.gicp.net;uid=dbtask;pwd=rain1q2w3e4r5t;database=dbdreamlink" />
 82 
 83 --(2)network关键字
 84 --dbnmpntw(name pipe) 和dbmssocn(tcp/ip)
 85 --示例:network=dbmssocn
 86 
 87 --两个方法只能使用其一,两个一起使用会报错。如果报错,不会尝试其他网络协议
 88 --如果连接字符串没有指定这两个关键字,则继续尝试接下来的几个方法进行连接
 89 
 90 
 91 
 92 
 93 
 94 --2、客户端别名
 95 --在注册表下或者配置管理器里,可以为某个实例设置别名。如果连接字符串中指定的服务器名字
 96 --和这里的某个别名一样,就使用别名定义的网络配置做连接
 97 
 98 --如果任何一个使用SQL SERVER Native Client的连接要连接showalias(showalias是别名),他不会
 99 --再去找showalias这台服务器,而是使用TCP/IP去找“shasqlpubs”这台服务器。如果连接不成功,
100 --会报错,不会尝试其他网络协议(因为已经知道别名所指的服务器计算机名)
101 
102 
103 --3、寻找相应数据驱动程序的“LASTCONNECT”注册表记录
104 --在注册表中,每个数据驱动程序(包括MDAC 、SQL SERVER Native Client9.0 和10.0)都会维护一
105 --组LASTCONNECT记录,记录上次连接某个服务器使用的网络配置。
106 --如果不成功,会尝试方法4
107 
108 
109 
110 
111 
112 --4、按照数据库驱动程序的网络配置优先级选择网络协议,询问SQL Browser动态得知
113 --端口号或管道名字
114 --以上方法都不行,就使用这个方法。这种情况一般发生在第一次连接SQL,或者目标
115 --SQL的网络配置发生变化。
116 
117 --两个最常用的网络协议:命名管道 和TCP/IP
118 
119 SELECT @@CONNECTIONS
120 EXEC sys.sp_monitor
121 EXEC sys.sp_who
122 
123 
124 --最佳实践配置SQL服务器以及客户端服务器
125 --(1)禁用RSS
126 --找到如下注册表键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\EnableRSS
127 --将其设置为0
128 
129 --(2)禁用TaskOffload
130 --HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DisableTaskOff
131 --将其设置为1
132 
133 --(3)禁用TCP Chimney
134 --输入命令行 netsh int ip set chimney disabled
135 
136 --(4)禁用TCPA
137 --HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\EnableTCPA
138 --将其设置为0
139 
140 
141 --重启机器
142 --升级Windows到最新更新版本
143 --检查SQL里面的priority boost 和ligthweight pooling是否已禁用

 

posted @ 2013-07-27 15:45  桦仔  阅读(1355)  评论(0编辑  收藏  举报