1

私たちのシステムは、VB6 のレガシー アプリケーションと新しい .NET アプリケーションを組み合わせて使用​​しています。アプリケーションはクライアントに展開され、ターミナル サーバー ボックスからアプリケーションを実行し、SQL Server データベースは別のボックスで実行されます。

VB6 アプリケーションは正常に動作しますが、すべての .NET アプリケーションは起動時に失敗し (構成情報を読み取るためにデータベースに接続しようとします)、毎回次のエラーが表示されます。

System.Data.SqlClient.SqlException: SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: TCP プロバイダー、エラー: 0 - 接続先が一定時間後に適切に応答しなかったために接続の試行が失敗したか、接続されたホストが応答しなかったために確立された接続が失敗しました。)

ここで非常に奇妙なことがあります。.NET アプリケーションで使用される正確な接続文字列を複製するテスト .NET アプリケーションを C# で作成しました。テストアプリが動作します。

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 を介してビルドされた元のアプリケーションと同じ動作をします。
4

1 に答える 1