找到使用SQLNCLI10.1指定的服务器/实例时出错

时间:2016-10-26 08:39:11

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

以下场景中有防火墙:

  1. 客户端PC

    • IP 10.10.140.100
    • 子网255.255.0.0
    • Gateway:10.10.0.254
  2. 服务器PC

    • IP 10.40.140.100
    • 子网255.255.0.0
    • Gateway:10.140.255.254
  3. 通信本身已经在运行(ping,使用WebClient),所以不要过于担心。 我在应用程序中使用以下连接字符串连接到命名实例(在本例中为" WINCC")从客户端PC到服务器PC(SQL Server 2008 R2)时遇到连接问题(数据库名称是正确的,已检查过!):

        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,端口是在网络防火墙中打开的
    • 到目前为止,这在其他所有网络环境中都有效,但仍有某种方式阻止了网络中的访问

    脚本崩溃,出现以下错误: " SQL Server网络接口:错误定位服务器/实例指定[xFFFFFFFF]"尝试建立与数据库的连接时(.Open命令)。 我99%肯定它必须对未打开的端口做一些事情。我已经多次看到Sql Browser服务的UDP端口1434必须打开。使用SQL NAtive客户端提供程序时这也是相关的吗?或者我应该尝试在连接字符串中专门命名端口? (比如" 10.40.140.100,49181 / WINCC"?)

    任何评论都表示赞赏,谢谢! 最好的祝福, CMSPaul

1 个答案:

答案 0 :(得分:0)

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

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