问:我创建了一个使用tcp/ip网络图书馆的服务器别名。客户端服务器别名被配置为动态确定所使用的端口。怎样才能找出客户所使用的端口以便我设置自己的防火墙?
答:客户端用于联络sql server实例的端口与该实例用于监听客户端请求实例的端口是一样的。您有几种方法来确定正被使用的端口号。请记住,当服务器首次被安装时,sql server 动态地选择端口。以后每次服务器暂停工作和重新启动时使用的端口号都是一样的。动态端口分配是一次性的事件。
要查看正被sql server实例使用的端口号,可以选择以下的任何一种方法:
打开server网络实用工具,点击启用的协议列表中tcp/ip条目的属性。
查看特定实例的错误日志。您会在错误日志中看到与下面相似的条目:
sql server listening on 127.0.0.1: 1362.
冒号后的四位数是sql server正用于监听ip地址的端口,冒号左边是详细的信息。
查看注册表。根据您安装和升级sql server的方式,具体的注册表子键会有所不同,但您会看到和下面相似的键:
hkey_local_machine\software\microsoft\
instancename\mssqlserver\supersocketnetlib\tcp\
instancename是您正在使用的sql server实例的名称(对于默认实例,instancename为mssqlserver)。该键有一个名为tcpport的条目,其中包含了正在被使用的端口号。
您需要这个端口号来设置客户端和服务器之间的防火墙。客户端向sql server的udp 1434端口发送特殊的请求,以确定使用哪一个端口。sql server返回可用的服务器实例的列表,以及每个实例正在使用的端口。如果屏蔽了udp 1434端口,则通过防火墙与sql server实例的连接将无法实现。