7

我在生产环境中有一个奇怪的错误,但在开发环境中没有。在我的开发环境中,使用 Visual Studio 2010,我可以毫无问题地连接到 Sql Server 2012。当我将我的 Windows Form 应用程序复制到同一网络中的其他 PC 时,我收到“错误 26:错误定位服务器/指定实例”。

同一个应用程序在带有 Sql Server 2008 的旧数据库实例上运行良好。我不知道要检查什么以及从哪里开始!

编辑:另一个奇怪的行为是,如果我使用这样的代码,它会很好用

conn.Open()

dr = cmd.ExecuteReader()

但是,如果我打开带有 datagridview、数据集和 BindingSource 的表单,请停止工作!

4

1 回答 1

6

博客文章包含有关错误 26 的详细信息。

从帖子:

总之,我们收到此错误消息的原因是客户端堆栈无法接收来自 SQL Browser 的 SSRP 响应 UDP 数据包。很容易隔离问题。以下是步骤:

  1. 确保您的服务器名称正确,例如,名称没有拼写错误。
  2. 确保您的实例名称正确,并且您的目标机器上实际上存在这样的实例。[更新:某些应用程序将 \ 转换为 . 如果您不确定您的应用程序,请在连接字符串中同时尝试 Server\Instance 和 Server\\Instance]
  3. 确保服务器机器可访问,例如,DNS 可以正确解析,您可以 ping 服务器(并非总是如此)。
  4. 确保 SQL Browser 服务正在服务器上运行。
  5. 如果服务器上启用了防火墙,则需要将 sqlbrowser.exe 和/或 UDP 端口 1434 置于异常中。

完成这些步骤后,您应该不会再看到此错误消息。您可能仍然无法连接 SQL 服务器,但错误消息应该有所不同,并且您现在遇到了不同的问题。[更新:如果仍然失败,您可以将 server\instance 替换为 tcp:server\instance 和/或 np:server\instance 并查看它是否使用 TCP 或 NP 协议成功。这样,您可以稍微隔离问题。]

于 2012-11-15T16:00:24.363 回答