这不是重复的;我的情况与我发现的其他情况不同:
MSSQLSERVER 服务*未*启动,端口 1433 正在使用中 https://blogs.msdn.microsoft.com/sql_pfe_blog/2016/10/05/tcp-port-is-already-in-use/ https://support。 plesk.com/hc/en-us/articles/213409409
差异:
- TCPView 和 TCPView都
cls & netstat -oanb -p tcp
没有显示在端口 1433 上侦听的任何内容 - 根据 EventLog 消息,这发生在 IPV6
- 对于在同一台机器上运行的两个命名实例,问题不会出现——只有默认实例
据我所知,我没有以任何方式、形状或形式使用 IPV6。我当然没有配置它。
当我进行以下任何配置时,该服务将启动:
- 在 SQL 配置管理器中禁用 TCP/IP
- 启用 TCP/IP 但关闭TCP/IP 属性中的全部侦听
- 当Listen All关闭时,禁用IP Addresses选项卡上的所有 IP
如果我执行其中任何一项,服务将无法启动:
- 开启全部收听
- 启用任何 IP 地址
这让我把头发拉了出来。
这里出了什么问题?
因为
netstat
并不表示任何东西正在侦听端口 1433,所以当 SQL 尝试启动时,客户端可能已经在使用端口 1433。来自SQL Server Premier Field Engineer 博客文章“TCP 端口已在使用中”:默认动态端口范围可能包括端口 1433。您可以使用
netsh int ipv4 show dynamicportrange tcp
.IPv6 版本
原始发帖人指出,即使记录的错误提到了 IPv6,但他的问题却出在 IPv4 上。但如果是IPv6 端口冲突,则可以对 IPv6 执行相同的过程。
netsh int ipv6 show dynamicportrange tcp
netsh int ipv6 add excludedportrange tcp startport=1433 numberofports=1 store=persistent
可能会超过一年,但我确实希望这对其他人也有帮助。
我无法确认这一点,但看起来同一个 SQL 服务器实例喜欢为所有端口分配相同的端口值。
您需要打开 SQL Server 配置管理器(如果找不到,请访问https://blog.sqlauthority.com/2019/03/01/sql-server-sql-server-configuration-manager-missing-from -开始菜单/)
仅分配一个 IP 使用端口 1433 并将其他 IP 配置为动态值,方法是将 TCP 动态端口设置为 0 并将 TCP 端口值设为空白。我选择了 127.0.0.1 (loopback IP @ local) 来绑定。重新启动 SQL Server 服务。