站长网 MsSql教程 sql-server – 什么时候动态端口“动态”?

sql-server – 什么时候动态端口“动态”?

我今天和我的一位同事就动态端口进行了讨论,可以使用一些帮助来澄清它们的工作原理. 第一个问题:如果IPALL TCP Dynmaic Ports设置是一个特定的数字(比如说1971)那么这表示你有一个1971的静态端口或一个当前1971的动态端口,并且可能在将来某个时候发生变化

我今天和我的一位同事就动态端口进行了讨论,可以使用一些帮助来澄清它们的工作原理.

第一个问题:如果IPALL TCP Dynmaic Ports设置是一个特定的数字(比如说1971)那么这表示你有一个1971的静态端口或一个当前1971的动态端口,并且可能在将来某个时候发生变化.

第二个问题:这是我最好奇的一个.通过几十次实例重启,我们有一个实例具有相同的端口(IPALL TCP Dynmaic Ports设置中的值)多年.什么实际上导致动态端口在实例重启后实际更改?

解决方法

这篇知识库文章:
How to configure SQL Server to listen on a specific port将为您澄清一些事情:

动态端口分配

如果将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.zwzz.com.cn/html/jc/mssql/2021/0524/5261.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部