今天我正在Dynamic Ports
与我的一位同事进行讨论,并且可以使用一些帮助来澄清他们的工作方式。
第一个问题:如果IPALL
TCP Dynmaic Ports
设置是一个特定的数字(比如 1971),这是否表示您有一个静态端口 1971 或一个当前为 1971 的动态端口,并且将来可能会更改。
第二个问题:这是我最好奇的一个。IPALL
TCP Dynmaic Ports
我们有一个实例,通过数十次实例重启,多年来一直使用相同的端口(设置中的值)。实例重新启动后,究竟是什么导致动态端口实际发生变化?
这篇知识库文章:如何配置 SQL Server 以侦听特定端口将为您阐明一些事情:
动态端口分配
如果将 SQL Server 实例配置为使用动态端口分配,并且尚未重新启动 SQL Server 实例,则注册表值设置如下:
但是,如果将 SQL Server 实例配置为使用动态端口分配,并重新启动 SQL Server 实例,则注册表值设置如下:
静态端口分配:
如果将 SQL Server 实例配置为使用静态端口,并且尚未重新启动 SQL Server 实例,则注册表值设置如下:
但是,如果将 SQL Server 实例配置为使用静态端口,并重新启动 SQL Server 实例,则注册表值设置如下:
对于你的第二个问题-
每次启动命名的 SQLServer 时,它都会使用分配的端口。如果该端口被另一个程序使用,则 SQL Server 在重新启动时选择另一个端口,即动态端口在第一次启动时选择,并且通常在以后重新启动时保持不变(存储在注册表中) - 但是如果它被另一个程序使用,然后 SQL 服务器将选择一个新端口。注意:对于 Prod 服务器,我只使用静态端口——出于安全性和易于管理的原因。
注意:发现更多很酷的东西:
检查动态端口是否正在使用或不使用 T-SQL :
您可以使用
netstat -ano
cmdline 进行检查。此外,您可以检查客户端注册表中先前缓存的内容,以了解它用于连接到 sql server 的端口: