Answers:
该知识库文章:如何配置SQL Server以在特定端口上进行侦听将为您澄清一些事情:
动态端口分配
如果将SQL Server实例配置为使用动态端口分配,并且尚未重新启动SQL Server实例,则注册表值设置如下:
TCPDynamicPorts =空白
TCP端口= 0
但是,如果将SQL Server实例配置为使用动态端口分配,然后重新启动SQL Server实例,则注册表值将设置如下:
TCPDynamicPorts =当前使用的端口
TCPPort =使用的当前端口
静态端口分配:
如果将SQL Server实例配置为使用静态端口,并且尚未重新启动SQL Server实例,则注册表值设置如下:
TCPDynamicPorts =使用的最后一个端口
TCPPort =下次重启后使用的新静态端口;使用服务器网络实用程序设置的新静态端口
但是,如果将SQL Server实例配置为使用静态端口,然后重新启动SQL Server实例,则注册表值将设置如下:
TCPDynamicPorts =空白
TCPPort =您使用服务器网络实用程序设置的新静态端口
对于第二个问题 -
每次启动命名的SQLServer时,它都会使用分配的端口。如果该端口被另一个程序使用,则SQL Server在重新启动时会选择另一个端口,即,动态端口是在第一次启动时选择的,并且在以后的重新启动过程中通常保持不变(存储在注册表中)-但是如果它被另一个程序使用,则SQL Server将选择一个新端口。注意:对于Prod Server,我仅使用静态端口-安全和易于管理的原因。
注意:更酷的东西可以找到:
使用T-SQL检查是否正在使用动态端口:
SELECT NAME
,protocol_desc
,type_desc
,state_desc
,is_admin_endpoint
,port
,is_dynamic_port
,ip_address
FROM sys.tcp_endpoints
您可以使用 netstat -ano
cmdline进行检查。
另外,您可以检查客户端注册表中较早缓存的内容,以了解它用于连接sql server的端口:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect
second question
每次启动命名的SQLServer时,它都会使用分配的端口。如果该端口被另一个程序使用,则SQL Server在重新启动时会选择另一个端口。动态端口是在首次启动时选择的,通常在以后的重新启动时将保持不变(存储在注册表中)-但是如果其他程序使用了该端口,则SQL Server将选择一个新端口。注意:对于Prod Server,我仅使用静态端口-安全和易于管理的原因。
Second question
上面的问题。