第一个问题:如果IPALL TCP Dynmaic Ports设置是一个特定的数字(比如说1971)那么这表示你有一个1971的静态端口或一个当前1971的动态端口,并且可能在将来某个时候发生变化.
第二个问题:这是我最好奇的一个.通过几十次实例重启,我们有一个实例具有相同的端口(IPALL TCP Dynmaic Ports设置中的值)多年.什么实际上导致动态端口在实例重启后实际更改?
解决方法
动态端口分配
如果将sql Server实例配置为使用动态端口分配,并且尚未重新启动sql Server实例,则注册表值设置如下:
TCPDynamicPorts = Blank
TCPPort = 0
但是,如果将sql Server实例配置为使用动态端口分配,并重新启动sql Server实例,则注册表值设置如下:
TCPDynamicPorts = Current port that is used
TCPPort = Current port that is used
静态端口分配:
如果将sql Server实例配置为使用静态端口,则注册表值设置如下:
TCPDynamicPorts = Last port that is used
TCPPort = New static port to be used after the next restart; new static port that you set by using the Server Network Utility
但是,如果将sql Server实例配置为使用静态端口,则注册表值设置如下:
TCPDynamicPorts = Blank
TCPPort = New static port that you set by using the Server Network Utility
对于你的第二个问题 –
每次启动命名的sqlServer时,它都会使用分配的端口.如果该端口被另一个程序使用,则sql Server在重新启动时选择另一个端口,即在第一次启动时选择动态端口,并且通常在将来重新启动时保持相同(存储在注册表中) – 但是如果它由另一个程序使用,然后sql服务器将选择一个新的端口.注意:对于Prod服务器,我只使用静态端口 – 安全性和易管理性.
注意:更多冷却的事情要找出:
使用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
原文地址:https://www.jb51.cc/mssql/79456.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。