我们的主办公室有几个SQL Server实例,我们的共同定位的Web服务器上有一个。有一些复制可以处理Web服务器和主办公室服务器之间的数据交换。
我们今天在主办公室切换了ISP。我们完成了我们的功课并为切换做好了准备(更改了主机文件中的ips等等)。一旦我们切换到新连接,所有复制都完全破坏了。我尝试使用SSMS连接到我们的主办公室服务器;没有cookie。我们可以使用我们的Web服务器中的服务器名称ping和ftp到我们的家庭办公室服务器。我看到新的ISP阻止了端口1433和1434,并通知了相应的人员;他们现在应该畅通无阻。 SMSS仍然没有骰子。
然后我尝试连接sqlcmd,这非常有用。 SMSS不会连接到服务器,但sqlcmd将。为什么是这样?在ISP切换之前,一切都像魅力一样。
实施例
ping homeserver success! ftp homeserver success! sqlcmd -S homeserver\instance -U user -P pass success! - Trying to connect using SSMS, using the same homeserver\instance and user/pass combo Provider: SQL Network Interfaces, error: 26 - Error locating server/instance specified)
答案 0 :(得分:1)
SQL不侦听TCP 1434,它侦听UDP 1434.您无法使用telnet测试UDP端口。让您的ISP打开UDP 1434。
检查服务器上的客户端连接顺序,我会得到名称管道高于TCP / IP,但SSMS由于某种原因没有使用命名管道。
如果您使用的是命名实例,请确保SQL Server具有您在colo和办公室之间打开的TCP端口。
您可能需要考虑在办公室和colo之间设置VPN,这样您就不必担心两者之间的防火墙了。
答案 1 :(得分:0)
实例应该是:homeserver \ instance(反斜杠而不是正斜杠)
答案 2 :(得分:0)
有点猜测,但SQL有不同的网络协议选项,包括共享内存,TCP / IP,命名管道和VIA。您可以使用SQL Server配置管理器为服务器和客户端(在相应的计算机上)设置配置。 本机客户端通常使用命名管道,它通常不能在WAN上工作,因为(我认为)它使用广播进行名称解析(并且可能需要打开更多端口)。因此,如果SSMS尝试通过命名管道进行连接,则可能无法解析服务器名称,而如果sqlcmd使用TCP / IP,则可以进行连接。
换句话说,我看到的第一个地方是服务器和客户端上的SQL Server配置管理器 。尝试禁用TCP / IP以外的所有内容或更改提供程序顺序,以便TCP / IP位于顶部。您可以将共享内存放在顶部并启用,如果您愿意,它可以方便本地计算机连接。
答案 3 :(得分:0)
您还可以在服务器上启用SQL浏览器服务,从而实际上可以看到服务器实例的名称。