【问题标题】:Error Locating Server/Instance Specified using SQLNCLI10.1使用 SQLNCLI10.1 定位服务器/实例时出错
【发布时间】:2016-10-26 08:39:11
【问题描述】:

这台电脑之间有防火墙的以下场景:

  1. 客户端电脑

    • IP 10.10.140.100
    • 子网 255.255.0.0
    • 网关:10.10.0.254
  2. 服务器电脑

    • IP 10.40.140.100
    • 子网 255.255.0.0
    • 网关:10.140.255.254

通信本身已经在工作(ping,使用 WebClient),所以不要太担心。 我在使用应用程序中的以下连接字符串(数据库名称正确,已检查那个!):

    strserver = "10.40.140.100"
    strConnectionString = "Provider=SQLNCLI10.1;Integrated Security=SSPI;    Persist Security Info=False;Initial Catalog=" & Database & ";Data Source=" & strServer & "\WINCC"    

情况:

  • Microsoft SQL Server 2008 Native Client 安装在客户端 PC 上
  • 客户端 PC 上使用的 windows 用户存在于服务器 PC 上,并且是必要用户组的一部分(在这种情况下,由于 WinCC,SIMATIC HMI 组)
  • 我查了一下sql server使用的动态端口是49181,这个端口是在网络的防火墙里打开的
  • 到目前为止,这在所有其他网络环境中都有效,但仍有一些东西以某种方式阻止了网络中的访问

脚本因以下错误而崩溃: 尝试建立与数据库的连接(.Open 命令)时,“SQL Server 网络接口:定位指定的服务器/实例时出错 [xFFFFFFFF]”。 我 99% 确定它必须在未打开端口的情况下做某事。我已经多次看到 Sql Browser 服务的 UDP 端口 1434 必须为 .这在使用 SQL Native Client Provider 时是否也相关?或者我应该尝试在连接字符串中专门命名端口? (比如“10.40.140.100,49181/WINCC”?)

欢迎评论,谢谢! 此致, CMS保罗

【问题讨论】:

    标签: vbscript sql-server-2008-r2 port connection-string firewall


    【解决方案1】:

    使用动态端口通常会导致问题。如果您有一个应用服务器连接到网络内的 SQL 服务器,我建议在 SQL 服务器上使用静态 IP,然后按照定义将其路由通过防火墙。正如你所说,我会在你的连接字符串中定义 TCP/IP 端口。

    这将在 SQL Server 网络配置下的 SQL Server 配置管理器中进行设置。为 选择协议。右键单击 TCP/IP 并选择 IP 地址选项卡。确保所有 TCP 动态端口都设置为 0。在 IPALL 下,将 TCP 端口设置为静态 IP 地址。完成后,您将需要重新启动 SQL 服务器服务。

    【讨论】:

    • 我也想过这个解决方案,我会在下周尝试这种方式。不过感谢您的确认,我会告诉您进展如何!
    • 我认为它应该适合您的需求。祝你好运!!
    • 最后的问题是 SQl 服务器在安装时设置了 IPv6 地址,当尝试从客户端连接到服务器时,他无法将 IPv4 地址链接到正确的 SQL 服务器。但尽管如此,现在为 SQL 服务器使用静态 IP 只是为了保存。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多