一、网络协议概述
服务器可以同时监听或监视多个网络协议。 但必须对每个协议都进行配置。 如果没有配置某个协议,则服务器将无法监听该协议。 安装完成后,可以使用 SQL Server 配置管理器更改这些协议配置。
如果启用或禁用网络协议,或者修改了网络协议的配置,必须重新启动 SQL Server 实例才能生效。
二、SQL Server 网络配置
SQL Server 2008 支持以下四种协议:
(1)Shared Memory
Shared Memory 是可供使用的最简单协议,没有可配置的设置。它是一个用于Windows Server内部通信的由进程共享内存的空间。使用 Shared Memory 协议的客户端仅可以连接到本机运行的 SQL Server 实例。
如果怀疑其它协议配置有误,请禁用除 Shared Memory 以外的其它所有协议,以进行故障排除。
(2)Named Pipes
Named Pipes协议使用进程间通信信道进行高效的服务器内部通信和局域网通信。它的运行模式是内存的一部分被某个进程用来向另一个进程传递信息。因此,一个进程的输出就是另一个进程的输入。第二个进程可以是本地的,也可以是远程的。
但由于通过网络或防火墙连接时Named Pipes需要过多的开销,而且它还要求打开额外的端口445,所以一般来说最好禁用Named Pipes。
然而有许多应用程序需要用到Named Pipes协议,因为他们是围绕NetbBIOS或给予LAN的协议设计的。Named Pipes可以轻松访问单个安全域中的远程过程调用,因而对这些应用程序很有帮助。如果您需要支持这些应用程序,而SQL Server并没有暴露给外部通信量,那么启用Named Pipes协议和相应的端点的风险是最小的。
默认情况下,SQL Server 侦听:\\.\pipe\sql\query(对于默认实例)和 \\.\pipe\MSSQL$<instancename>\sql\query(对于命名实例)。此字段最多允许 2047 个字符。
(3)TCP/IP
TCP/IP是大部分SQL Server客户端访问时的主要网络协议。
(4)VIA
Virtual Interface Adapter协议与支持的硬件和网络配置一起使用。虚拟接口体系由HP、Intel 和 Microsoft 联合开发,被设计成一个可减少网络协议的开销的高性能协议,该协议在用户模式上下文而非内核模式上下文下运行。
三、SQL Server 2012的变化
SQL Server 2012不支持VIA协议。
四、防火墙端口
配置了SQL Server使用的网络协议之后,还要打开防火墙的相应端口,客户端才能访问SQL Server实例。
注意:从Windows Server 2008和Windows Vista开始,Windows的安全策略有重大变化,在安装SQL Server时不会自动打开防火墙的相应端口,仅有一个警告信息。
关于防火墙的配置,请参考 http://jimshu.blog.51cto.com/3171847/590411
“三、为SQL Server 开放端口”
1、使用 Shared Memory 协议的客户端仅可以连接到本机运行的 SQL Server 实例。
2、如果启用或禁用网络协议,或者修改了网络协议的配置,必须重新启动 SQL Server 实例才能生效。
3、如果怀疑其它协议配置有误,请禁用除 Shared Memory 以外的其它所有协议,以进行故障排除。
4、SQL Server 2012不支持VIA协议。
5、推荐使用TCP/IP协议。
默认情况下,Shared Memory是开放的。有时候,本机可以连接到SQL Server实例,而远程客户端却连不上实例,就要检查:
1、防火墙
2、TCP/IP协议的配置
扩展了解内容:
关于SQL SERVER协议在SSCM中有3处,
1:SQL Native Client 10.0 Configuration(32bit)中的Client Protocaols下有上述4项服务。
2:在SQL Sserver Network Configuration下的Protocals for MSSQLSERVER下有上述4项服务。
3:在SQL Native Client 10.0 Configuration下的Client Protocols有上述4项服务。
不知这3个地方的这4项服务都有什么区别,谢谢解答。
关于SCCM中网络协议的界面
如下图,这是一个安装在64位操作系统上的SCCM,一共有4个地方出现了网络协议的配置。
其功能分别是:
(1)SQL Server 网络配置
可以配置本机每个实例的网络协议,仅对客户端(本机或远程)64位应用程序生效。也就是说,不管哪里的客户端,只要是以64位的模式来访问这个SQL Server实例,该实例就用这里的配置进行响应。
(2)SQL Native Client 11.0 配置
本机的64位应用程序去访问服务器(本机或远程)时,使用这里的配置。
(3)SQL Server 网络配置(32位)
可以配置本机每个实例的网络协议,仅对客户端(本机或远程)32位应用程序生效。也就是说,不管哪里的客户端,只要是以32位的模式来访问这个SQL Server实例,该实例就用这里的配置进行响应。
(4)SQL Native Client 11.0 配置(32位)
本机的32位应用程序去访问服务器(本机或远程)时,使用这里的配置。
转载文章地址:http://bbs.51cto.com/thread-1078121-1.html