VB6应用程序可以连接到SQL Server,但.NET应用程序不能(VB6 application

2019-10-17 03:10发布

我们的系统使用VB6的传统应用程序和新的.NET应用程序的组合。 将应用程序部署到我们的客户,他们运行从终端服务器框中的应用,在不同的机器上运行的SQL Server数据库。

VB6的应用程序正常工作,而所有的.NET应用程序的失败在启动时(试图连接到数据库中读取配置信息)有错误,每次:

System.Data.SqlClient.SqlException:在与SQL Server建立连接时出现与网络相关的或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称是否正确,以及SQL Server配置为允许远程连接。 (provider:TCP提供程序,error:0 - 连接尝试失败,因为连接的方没有正确一段时间后响应或已建立的连接失败,因为连接的主机没有反应。)

这里是很奇怪的事情:我创建了C#是通过复制的.NET应用程序所使用的精确的连接字符串测试.NET应用程序 - 我部署,显示实际使用的连接字符串的一个应用程序的规范版本 - 和测试应用程序的工作原理

VB6连接字符串(作品): Provider=SQLOLEDB;Data Source=servername;Initial Catalog=databasename;User ID=username;Password=password;

.NET连接字符串(包括工作和不工作): Data Source=servername;Initial Catalog=databasename;User ID=username;Password=password;Application Name="ourappname"

我们的其他客户都没有遇到过这个问题,用相同的二进制文件,这告诉我这是与.NET应用程序如何与这个特定客户的系统进行交互的一个问题。

我应该采取什么步骤来解决/解决这个问题? 我真的在这点损失。 我希望别人之前已经看到过这个问题; 我找不到在谷歌任何有关。


  • 这两个箱子是在Windows Server 2008 R2 SP1在VMware上运行,并且是在同一个域中
  • 两个框运行ESET NOD32; 禁止没有改变任何东西
  • SQL Server是2008 R2 RTM(也有在同一台2008和2008 R2命名实例)的默认实例
  • 这些应用程序(和我的测试应用程序)是.NET 4.0
  • 该应用程序使用SQL登录认证(是的,我检查了正在使用的应用程序失败的密码是正确的)
  • 一些.NET应用程序使用不同的代码来执行应用程序的启动,但他们都表现出了同样的错误
  • 一些在.NET应用程序的是C#,有些是VB,一些混合(VB应用,C#芯组件)
  • 我试着修复.NET 4.0安装
  • 我试图重新启动两个框
  • 我试过部署源二进制文件,使得我们的部署子系统是规避(如果这是造成某种腐败)
  • 我本地编译仪器化应用程序遇到相同的行为,原来,这是通过团队系统建成

Answer 1:

我发现,通常有这种行为的几个主要原因:

  1. SQL Server未配置为侦听特定的连接类型。 为了确定这一点,在SQL机打开SQL Server配置管理器,单击SQL Server网络COnfiguraiton然后MSSQLSERVER的协议。 验证TCP / IP已启用。

  2. SQL服务器不允许远程连接(如果其他应用程序的连接,那么这显然不是一个问题)。

  3. 客户机没有配置使用SQL Server的支持的协议交谈SQL Server或客户机已经进入了不正确的配置信息。 为了验证这一点,请从运行...提示cliconfg,并确保适当的协议启用,并且没有任何冲突的别名在别名选项卡。 我平时用的情况下,有一个DNS问题(至少在测试)相应的IP地址的连接字符串中配置的机器名专门增加一个。

  4. 由于VB6客户的工作和.Net客户端不存在可能与64位与32位的访问的问题。 如果您的应用程序被编译为64位或任何CPU,您可以尝试在32位编译,看看是否能解决访问。 如果是这样,那么这是最有可能是64位SQL客户端配置问题。



文章来源: VB6 applications can connect to SQL Server, but .NET applications can't