这不是重复的;我的情况与我发现的其他情况不同:
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
区别:
cls & netstat -oanb -p tcpTCPView 和 TCPView都没有显示在端口 1433 上侦听的任何内容据我所知,我没有以任何方式、形状或形式使用 IPV6。我当然没有配置它。
当我进行以下任何配置时,该服务将启动:
如果我执行以下任一操作,服务将无法启动:
这让我把头发拉了出来。
这里出了什么问题?
小智 9
可能需要一年多的时间,但我确实希望这对其他人也有帮助。
我无法确认这一点,但看起来同一个 SQL Server 实例喜欢为所有端口分配相同的端口值。
您需要打开 SQL Server 配置管理器(如果找不到它,请访问https://blog.sqlauthority.com/2019/03/01/sql-server-sql-server-configuration-manager-missing-from -开始菜单/)
通过将 TCP 动态端口设置为 0 并取消 TCP 端口值,仅分配一个 IP 使用端口 1433,并将其他 IP 配置为动态值。我选择127.0.0.1(环回IP@本地)进行绑定。重新启动 SQL Server 服务。
因为netstat并不表示有任何东西正在侦听端口 1433,所以当 SQL 尝试启动时,客户端可能已经在使用端口 1433。来自SQL Server Premier Field Engineer 博客关于“TCP 端口已在使用中”的文章:
第二种情况涉及使用与 SQL Server 相同的动态端口在服务器上运行的客户端。每个 TCP 会话都需要两个端点 - 一个客户端端点和一个服务器端点。每个端点都是一个 IP 地址/端口组合 - 也称为 TCP 套接字。通常,客户端套接字代码会要求操作系统从一系列动态端口中提供一个端口。服务器套接字是客户端连接到的服务的 IP/TCP 端口(例如 SQL Server)。
默认动态端口范围可能包括端口 1433。您可以使用 进行检查netsh int ipv4 show dynamicportrange tcp。
...如果您碰巧有一个在 SQL Server 之前启动的客户端(想想 Windows 操作系统系统服务),它可以使用 TCP/1433 作为其客户端套接字。......那么,您如何解决和预防这样的情况?操作系统中还有另一个功能,它允许您告诉操作系统动态端口范围中应该排除的 TCP 端口。所需要做的就是使用管理命令提示符运行以下命令:
netsh int ipv4 add excludedportrange tcp startport=1433 numberofports=1 store=persistent
Run Code Online (Sandbox Code Playgroud)
进行该设置后,操作系统将不会向任何客户端提供该端口。服务仍然可以侦听它,但是当向操作系统询问动态端口时,您会阻止客户端获取它。
原发帖者指出,即使记录的错误提到了 IPv6,他的问题也出在 IPv4 上。但是,如果它已经是一个IPv6的端口冲突,同样的过程可以遵循使用IPv6。
netsh int ipv6 show dynamicportrange tcp
netsh int ipv6 add excludedportrange tcp startport=1433 numberofports=1 store=persistent
| 归档时间: |
|
| 查看次数: |
4229 次 |
| 最近记录: |