0

私はアイデアが不足しているので、誰かが光を当てることができるかどうかを確認しています.

  • 2 層のクライアント/サーバー アプリケーション
  • SQL Server 2005
  • ワークステーション: Windows XP
  • クライアント サーバー アプリケーション 1 は、SQL OLE DB プロバイダーを使用します。(プロバイダ=SQLOLEDB.1)
  • クライアント サーバー アプリケーション 2 は、SQL Native Client を使用します。(System.Data.SqlClient.SqlConnection)

どういうわけか、アプリケーション 1 は正常に動作しますが、アプリケーション 2 では、接続のタイムアウトを 30 秒に設定する必要があります。

JohnnyCoder のDatabase Connectivity Test with UDL Fileから学んだヒントを使用して、ドライバーのどこかに問題があることを突き止めました。Microsoft OLE DB Provider for SQL Server を試すと、すぐに接続されます。SQL Native Client を試すと、それほど時間はかかりません。接続タイムアウトを60に設定しても失敗します。

どちらのアプリケーションも、他のインストールでは適切に機能しますが、特定の 1 つのサイトでは機能しません。そのため、セキュリティ、ファイアウォールなどの環境設定に関連している必要があります。

ワークステーションに新しい SQL Server 2005 Native Client をインストールしてみました。運がない。

だから私の質問は:

  1. クライアントが実際に接続できないのに、アプリケーション 2 が機能するのはなぜですか? SQL Native Client のタイムアウトが発生したときに OLE DB を使用する内部ロジックはありますか?
  2. 他に何を調べますか?
4

1 に答える 1

2

回答: ネットワーク ファイアウォールが TCP/IP パケットをブロックしました。その結果、SQL Native Client は 20 秒後に TCP/IP でタイムアウトになり、名前付きパイプを試してみると動作しました。

于 2013-04-03T14:24:54.010 に答える