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,注意应当在实例名称前面加上“MSSQL$”前缀。此属性框最多允许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 的实例指定 TCP 端口,该实例将侦听这些端口。如果客户端向这些端口发起连接请求,侦听器会通知数据库引擎的安全模块进行身份验证,当身份验证通过后客户端就与该实例建立了连接。SQL Server 支持两种端口侦听方式。
◆ 静态端口
SQL Server 的默认实例侦听 1433 端口的传入连接。如果出于安全性原因或根据业务需求,可以考虑更改此端口。每个实例可以同时侦听多个静态端口,端口号以逗号分隔的格式列出,“静态端口”属性框最多允许2047个字符。
默认情况下,命名实例被配置为侦听动态端口。若要配置静态端口,请将“TCP 动态端口”框保留为空,并在“TCP 端口”框中提供一个可用的端口号。
数据库引擎启用某个侦听端口时,并不会主动在 Windows 防火墙中打开相应的端口,请配置防火墙以允许来自客户端计算机的入站连接。
◆ 动态端口
如果某个实例配置为侦听动态端口,则需要将“TCP 动态端口”设置为 0。数据库引擎在启动时将检查 Windows 中的可用端口,并为该端口打开一个端点用于客户端的传入连接。数据库引擎启动成功后,可以在“TCP 动态端口”查看当前正在使用的端口号。
默认情况下,客户端访问命名实例时,只需要提供服务器名和实例名。SQL Server 服务器上的 SQL Server Browser 服务会向客户端提供解析服务,返回该实例的动态端口号。如果服务器上的 SQL Server Browser 服务未启动,客户端必须在连接字符串中主动提供端口号,计算机名与端口号之间用逗号隔开。
由于每次启动实例时端口号都可能会改变,因此每次重新启动后都可能需要更改防火墙的配置。若要避免通过防火墙连接的问题,可改用静态端口。
提示:
如果 SQL Server 在启动时如果发现该端口已经被其他服务或应用程序占用,则会在 Windows 事件的“应用程序”节点中写一个 ID 为26023的事件,提示:服务器 TCP 提供程序无法在某个端口上侦听,因为此端口已经在使用中。此事件还会导致数据库引擎启动失败,并记录一个 ID 为17826的事件。
6.4.4 查看端口状态
SQL Server 启动会生成错误日志文件。可以借助日志查看当前实例侦听的所有端口。下例所示的日志片断显示了当前实例正在侦听 TCP1433、命名管道和 TCP1434(专用管理员连接)。
2015-01-07 11:52:55.20 spid15s Server is listening on [ 'any' <ipv6> 1433]. 2015-01-07 11:52:55.21 spid15s Server is listening on [ 'any' <ipv4> 1433]. 2015-01-07 11:52:55.21 spid15s Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\MSSQLSERVER ]. 2015-01-07 11:52:55.22 spid15s Server local connection provider is ready to accept connection on [ \\.\pipe\sql\query ]. 2015-01-07 11:52:55.22 Server Server is listening on [ ::1 <ipv6> 1434]. 2015-01-07 11:52:55.22 Server Server is listening on [ 127.0.0.1 <ipv4> 1434]. 2015-01-07 11:52:55.22 Server Dedicated admin connection support was established for listening locally on port 1434. |
在命令提示符使用 netstat 命令可以查看本地计算机当前正在侦听的 TCP 和 UDP 端口。
本文出自 “SQL Server 管理员指南” 博客,谢绝转载!