对我来说,问题在于DNS记录是错误的...
以下内容被证明非常有帮助,主要取自这篇博文。
这个错误信息其实很具体,解决方法也很简单。
只有当你试图连接到一个SQL Server命名的实例时,你才会得到这个错误信息。对于一个默认的实例,你永远不会看到这一点,因为即使我们在这个阶段失败了(即指定的服务器/实例定位错误),我们将继续尝试使用默认值进行连接,例如默认的TCP端口1433,命名管道的默认管道名称。
每次客户端与SQL Server命名的实例进行连接时,我们都会向服务器机UDP 1434端口发送一个SSRP UDP数据包。我们需要这个步骤来了解SQL实例的配置信息,例如,启用的协议、TCP端口、管道名称等。如果没有这些信息,客户端就不知道如何连接,它就会以这个错误信息失败。
总而言之,我们得到这个错误信息的原因是客户端堆栈无法接收来自SQL浏览器的SSRP响应UDP数据包。为了分离出确切的问题,请按照以下步骤操作。
确保你的服务器名称是正确的,例如,名称上没有错别字。
确保你的实例名称是正确的,并且在你的目标机器上确实有这样一个实例。(请注意,有些应用程序会将 \ 转换为 )。
确保服务器机器是可以到达的,例如,DNS可以被正确解析,你能够ping到服务器(不总是如此)。
确保SQL浏览器服务在服务器上运行。
如果服务器上启用了防火墙,你需要把sqlbrowser.exe和/或UDP 1434端口放入例外。
有一个角落里的情况,在你检查了步骤1到4之后,你仍然可能失败。 它也可能发生在以下情况。
一个可能被证明有用的工具是PortQry(它对我来说是有用的)。如果这个命令返回的信息包含你的目标实例,那么你就可以排除上述4)和5)的可能性,这意味着你确实有一个SQL浏览器在运行,而且你的防火墙没有阻止SQL浏览器的UDP包。在这种情况下,你可以检查其他可能的问题,比如连接字符串不正确。
最后说明一下,当你使用SNAC时,同样问题的错误信息是。 [SQL Native Client]SQL Network Interfaces:错误定位指定的服务器/实例[xFFFFFFFF]。
微软最近发布了一个指导性指南,可以作为一站式服务来解决大多数与SQL Server的连接问题。解决与SQL Server的连接错误
如果你从Windows机器A连接到Windows机器B(安装有SQL Server的服务器),并得到这个错误,你需要做以下工作。
在机器B上。
1.) 打开名为 "SQL服务器浏览器 "的Windows服务并启动该服务
2.) 在Windows防火墙中,启用传入端口UDP 1434(以防机器A上的SQL Server Management Studio正在连接或机器A上的程序正在连接)。
3.) 在Windows防火墙中,启用传入的TCP 1433端口(如果有一个telnet连接)。
4.) 在SQL Server配置管理器中,启用1433端口的TCP/IP协议。