SQL 网络实例相关问题(错误 258)

L. *_*gan 9 sql-server tcp

当尝试使用 MS Management Studio 和服务器名称[ XX.XXX.XXX.XXX,1433\MyServerName ]和 SQL 身份验证从远程计算机连接到 SQL 数据库时,我收到以下消息:

无法连接到 XX.XXX.XXX.XXX,1433\MyServerName。

其他信息:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:TCP 提供程序,错误:0 - 等待操作超时。)(Microsoft SQL Server,错误:258)

等待操作超时


我做了以下事情:

  • SQL Management Studio 的“服务器属性”窗口中允许远程连接
  • 将服务器计算机配置为具有静态 IPv4/DNS 地址。
  • 在 SQL 配置管理器中启用 TCP/IP(在 SQL Server 网络配置中)
  • 在 TCP/IP 属性中,调整 [ Protocol -> Listen All -> No ] 并将 IP[1-8] 设置为 TCP 端口 1433,将 IPAll 端口设置为 1433(TCP 动态端口留空)
  • 在 Windows 防火墙中为端口 TCP 1433、UDP 1434 设置入站/出站启用连接(域、公共、私有)规则(应该没有区别,因为指定了端口)、服务可执行文件:C:\Program Files (x86) 中的 sqlbrowser.exe )\Microsoft SQL Server\90\Shared(我认为未使用,因为指定了端口) C:\Program Files\Microsoft SQL Server\MSSQL13.MyServerName \MSSQL\Binn 中的 sqlservr.exe
  • 将服务器端路由器中端口 1433 (TCP)、1434 (UDP)(同样,应该无关紧要)的 NAT 操作设置为服务器的本地 IPv4 地址和端口 1433、1434。
  • 确保 SQL 服务正在运行,端口已打开并正在服务器计算机上侦听。

我可以使用 Windows 或 Sql 凭据以及 PC 名称或计算机的本地 IPv4 连接到服务器计算机上的数据库。

有趣的是,当>telnet XX.XXX.XXX.XXX 1433运行时,大约需要 10-12 秒才能失败(无法打开与主机的连接,在端口 1433: 连接失败),但我可以看到 2 个数据包到达路由器本身。与使用 SQL 管理器登录相同 - 数据包到达路由器,但任一服务器计算机拒绝(无法解析?)连接,或者甚至无法到达计算机。

感谢您的建议。


使用的版本:

  • MS SQL Server 2016 Express、MS SQL Management Studio 17、SQL Server 2016 配置管理器、Windows 10 专业版。

Tim*_*Tim 3

您在本地尝试过 telnet 1433 吗?

您确定您的本地连接使用的是 TCP/IP 吗?默认情况下,本地连接使用 DBNMPNTW(命名管道),它在后端使用共享内存进行本地连接,并且比 TCP/IP 更快。

当 SQL Server 在 TCP/IP 上正常工作时,telnet 将连接并让您眨眼等待协议 — 它不会挂起 10-12 秒并失败。

如果 telnet 在本地工作但在远程无法工作,那么您就知道问题出在网络层(防火墙、NAT、路由等)。如果没有,则问题出在 SQL 配置设置中。更改连接设置后是否重新启动服务?