0

我们的主要办公室有几个 SQL Server 实例,一个在我们的托管 Web 服务器上。有一些复制处理 Web 服务器和主要办公室服务器之间的数据交换。

我们今天在总部更换了 ISP。我们做了功课并准备好进行切换(主机文件中的 ips 已更改,等等......)一旦我们切换到新连接,所有复制都完全中断了。我尝试使用 SSMS 连接到我们的主要办公室服务器;没有饼干。我们可以使用来自我们 Web 服务器的服务器名称 ping 和 ftp 到我们的家庭办公室服务器。我看到 1433 和 1434 端口被新的 ISP 封锁了,并通知了相应的人;他们现在应该被解除封锁。SMSS仍然没有骰子。

然后我尝试使用 sqlcmd 进行连接,效果非常好。SMSS 不会连接到服务器,但 sqlcmd 会。为什么是这样?在 ISP 切换之前,一切都像魅力一样。

例子

ping 家庭服务器
    成功!
ftp 家庭服务器
    成功!
sqlcmd -S homeserver\instance -U user -P pass
    成功!
- 尝试使用 SSMS 进行连接,使用相同的 homeserver\instance 和 user/pass 组合
    提供程序:SQL 网络接口,错误:26 - 定位服务器/指定实例时出错)
4

4 回答 4

1

SQL 不侦听 TCP 1434,它侦听 UDP 1434。您无法使用 telnet 测试 UDP 端口。让您的 ISP 打开 UDP 1434。

检查服务器上的客户端连接顺序,我会发现命名管道高于 TCP/IP,但 SSMS 出于某种原因没有使用命名管道。

如果您使用命名实例,请确保 SQL Server 在 colo 和办公室之间打开了您使用的任何 TCP 端口。

您可能需要考虑在办公室和 colo 之间设置 VPN,这样您就不必担心两者之间的防火墙。

于 2009-03-23T00:05:00.317 回答
0

实例应该是:homeserver\instance(反斜杠而不是正斜杠)

于 2009-03-18T22:36:13.830 回答
0

有点猜测,但 SQL 对网络协议有不同的选择,包括共享内存、TCP/IP、命名管道和 VIA。您可以使用 SQL Server 配置管理器为服务器和客户端(在适当的计算机上)设置配置。本机客户端通常会使用命名管道,它通常不会在 WAN 上工作,因为(我认为)它使用广播进行名称解析(并且可能需要打开更多端口)。因此,如果 SSMS 尝试通过命名管道进行连接,它可能无法解析服务器名称,而如果 sqlcmd 使用 TCP/IP,它将能够。

换句话说,我首先要看的是服务器和客户端上的 SQL Server 配置管理器。尝试禁用 TCP/IP 以外的所有内容或更改提供程序顺序,以便 TCP/IP 位于顶部。您可以将共享内存留在顶部并根据需要启用,这对于本地计算机连接很方便。

于 2009-03-18T22:47:53.273 回答
0

您还可以在服务器上启用 SQL 浏览器服务,从而可以实际看到服务器实例的名称。

于 2009-03-20T09:42:14.977 回答