怎样才能找出客户所使用的端口以便我设置自己的防火墙? - 天地客人
问:我创建了一个使用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实例的连接将无法实现。