6.4 配置网络协议
在客户端连接到数据库引擎之前,数据库引擎必须启用网络协议。SQL Server 数据库引擎可同时启用多种网络协议为请求服务,客户端则使用单个协议连接到数据库引擎。
可以直接在右键菜单中启用或禁用某个网络协议。还可以在“属性”窗口进行详细配置,修改过的属性在重新启动该实例后生效。
6.4.1 配置Shared Memory协议
Shared Memory 协议的配置只有一个“已启用”选项。
6.4.2 配置 Named Pipes 协议
如果需要启用 Named Pipes 协议,可以将“已启用”选项设置为“是”。
默认情况下,默认实例的“管道名称”为:\\.\pipe\sql\query;命名实例的“管道名称”中需要包含实例名,例如:\\.\pipe\MSSQL$SQL2008\sql\query。此属性框最多允许2047个字符。
6.4.3 配置TCP/IP协议
“保持活动状态”指定传输保持活动状态的数据包的时间间隔,单位为毫秒,以检查位于远端的计算机是否可用。
通常情况下,开发版、评估版和Express版主要用于本机环境,因此这些版本的安装程序都默认禁用了TCP/IP协议。如果需要启用,可将“已启用”选项设为“是”。
“全部侦听”选项用于指定数据库引擎是否侦听所有绑定到计算机网卡的 IP 地址。默认值为“是”,表示位于属性窗口最下方“IPALL”属性框的设置将统一应用到所有的 IP 地址,此时将忽略每个 IP 地址各自的属性。
如果“全部侦听”选项设置为“否”,则每个 IP 地址都用各自的属性对话框对各个 IP 地址进行配置。“活动”选项为“是”时,表示该 IP 地址在计算机上处于活动状态。“已启用”选项表示该 IP 地址在计算机上侦听对于该实例的传入连接。
提示:
如果“全部侦听”选项设置为“否”,并且某个 IP 的“已启用”选项设置为“是”时,请注意这个 IP 地址的有效性。SQL Server 在启动时如果发现该 IP 地址实际上不存在,则会在Windows事件的“应用程序”节点中写一个ID为26024的事件,提示:服务器无法在某个 IP 地址上侦听。此事件还会导致数据库引擎启动失败,并记录一个ID为17826的事件,提示:由于网络库中存在内部错误,所以无法启动网络库。
SQL Server 支持两种端口侦听方式。
◆ 静态端口
SQL Server 的默认实例侦听 1433 端口的传入连接。可以出于安全性原因或根据业务需求来更改此端口。可以同时侦听多个静态端口,端口号以逗号分隔的格式列出,“静态端口”属性框最多允许2047个字符。
默认情况下,命名实例被配置为侦听动态端口。若要配置静态端口,请将“TCP 动态端口”框保留为空,并在“TCP 端口”框中提供一个可用的端口号。
数据库启用某个侦听端口时,并不会主动在Windows防火墙中打开相应的端口,请配置防火墙以允许来自客户端计算机的入站连接。
◆ 动态端口
如果某个实例配置为侦听动态端口,则需要将“TCP 动态端口”设置为 0。该实例在启动时将检查Windows中的可用端口,并为该端口打开一个端点用于客户端的传入连接。数据库引擎启动成功后,可以在“TCP 动态端口”查看当前正在使用的端口号。
动态端口通常由 SQL Server Browser 服务向客户端提供解析服务,否则客户端就必须事先知道该实例当前正在侦听的端口号,并且在连接字符串中提供端口号。
由于每次启动实例时端口号都可能会改变,因此每次重新启动后都可能需要更改防火墙的配置。若要避免通过防火墙连接的问题,可改用静态端口。
提示:
如果 SQL Server 在启动时如果发现该端口已经被其他服务或应用程序占用,则会在 Windows 事件的“应用程序”节点中写一个ID为26023的事件,提示:服务器 TCP 提供程序无法在某个端口上侦听,因为此端口已经在使用中。此事件还会导致数据库引擎启动失败,并记录一个ID为17826的事件。