我们的系统结合使用 VB6 旧应用程序和较新的 .NET 应用程序。应用程序部署到我们的客户端,它们从终端服务器盒运行应用程序,SQL Server 数据库在不同的盒中运行。
VB6 应用程序工作正常,而所有 .NET 应用程序在每次启动时都会失败(尝试连接到数据库以读取配置信息)并出现错误:
System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP Provider,错误: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 应用程序如何与这个特定客户的系统交互的问题。
我应该采取哪些步骤来解决/解决此问题?在这一点上,我真的很茫然。我希望其他人以前见过这个问题;我在 Google 上找不到任何相关内容。
- 两个盒子都是在 VMWare 上运行的 Windows Server 2008 R2 SP1,并且在同一个域中
- 两个盒子都运行 ESET NOD32;禁用并没有改变任何东西
- SQL Server 是 2008 R2 RTM 的默认实例(同一个盒子上还有 2008 和 2008 R2 命名实例)
- 应用程序(和我的测试应用程序)是 .NET 4.0
- 应用程序使用 SQL 登录进行身份验证(是的,我检查了失败的应用程序使用的密码是否正确)
- 一些 .NET 应用程序使用不同的代码来执行应用程序启动,但它们都表现出相同的错误
- .NET 应用程序有些是 C#,有些是 VB,有些是混合的(VB 应用程序、C# 核心程序集)
- 我尝试修复 .NET 4.0 安装
- 我试过重新启动两个盒子
- 我已经尝试部署源二进制文件,以便绕过我们的部署子系统(以防它导致某种损坏)
- 我在本地编译的检测应用程序与通过 Team System 构建的原始应用程序具有相同的行为