3

Microsoft Windows Server 2003, Enterprise Edition を使用して、アプリケーション サーバー上で Java と .net の両方のアプリケーションを実行しています。これらは、別のアプリ サーバー Windows 2008 64 ビット マシンに移行されています。

すべてのアプリケーションは、名前付きインスタンス上の同じ SQL Server 2005 データベースに接続します。

これまでのところ、構成ファイルを変更せずに、アプリケーションをそのままの状態で、古いボックスから新しいボックスに移動しようとしました。

新しいアプリ サーバーでは、Java アプリケーションも .net アプリケーションもデータベース (名前付きインスタンス) に接続しません。

JDBC エラー メッセージ:「指定されたインスタンスへの接続に失敗しました。エラー: java.net.SocketTimeoutException: 受信がタイムアウトしました。」

.net エラー メッセージ:「SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。」

DB 構成を名前付きインスタンスにない構成に変更すると、新しいアプリ サーバーで動作します。

古いアプリサーバーに接続できたため、データベースは正しくセットアップされています。新しいアプリ サーバーからデータベース サーバーに ping を実行できます。

これが新しいアプリ サーバーで機能しない理由はありますか?

Java 接続文字列: "jdbc:microsoft:sqlserver://[dbservername];SelectMethod=Cursor;instanceName=[dbinstance]"

.net 接続文字列: "Server=[dbservername]\[dbinstance];Database=Risk_DB;Uid=[user];Pwd=[pwd];"

更新 回答の提案に従って、インスタンスのポート番号を取得しました。SQL Server Management Studio もインストールしたので、問題点としてアプリを排除できます。Management Studio から、[サーバー名][インスタンス名] を使用すると、「SQL Server への接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました...」というメッセージが表示されますが、[サーバー名] を使用すると機能します。[ポート]。とにかくこれを回避する方法があるかどうかわかりませんか?

更新 #2問題をインフラストラクチャ/サーバー/ネットワーク チームにエスカレーションしました。彼らは、新しいアプリ サーバーで Windows ファイアウォールを無効にしました。Presto、Management Studio で [dbservername]\[dbinstance] に接続できるようになり、すべてのアプリが既存の構成ファイルを使用して動作しています。

4

2 に答える 2

6

名前付きインスタンスは別のポートで実行されます。ポート 1433 (デフォルト インスタンスのデフォルト) が開いている可能性があり、名前付きインスタンスが実行されているポートがブロックされている可能性があります。名前付きインスタンスのエラー ログでポートを確認できます (ローカルに接続できると仮定し、オブジェクト エクスプローラーでサーバーを展開し、[管理] を展開し、[SQL Server ログ] を展開し、[現在] を右クリックして、[SQL Server ログの表示] IIRC を選択します)。 )、起動時に次のように表示されます。

Server is listening on [ 127.0.0.1 <ipv4> 3587 ].

最後の番号は、リモート マシンからアクセスできるようにする必要があるポート番号であり、そこに到達するために通過する必要があるネットワーク デバイスやサービスです。そのような行が見つからない場合は、指定されたインスタンスに対して TCP/IP が有効になっていない可能性があります。そのサーバーで、SQL Server 構成マネージャーに移動し、SQL Server ネットワーク構成を展開し、[Protocols for] をクリックして、右側のペインで TCP/IP が有効になっていることを確認します。これを有効にする必要がある場合は、有効にするために SQL Server を再起動する必要があります。

すでに有効になっている場合 (または有効にしてサービスを再起動した場合)、このビューを更新して、TCP/IP を右クリックし、プロパティをクリックして IP に移動すると、使用されているポートを検証できるはずです。アドレスタブ。各 IP の現在のポートを確認できます。ここには、複数の IPn セクションと IPAll セクションがあります。各 IP について、[TCP ポート] ボックスを使用するポートに変更できます (すべての [動的 TCP ポート] ボックスの値を削除して 0 にします)。[適用] をクリックして、サービスを再起動します。これには再びサービスの再起動が必要になりますが、特定のポートを指定できるため、ファイアウォールに除外を追加できます (または、このサーバーがまだそのポートを使用していないと仮定して、既に存在するポートを利用できます)。

于 2012-05-01T00:01:29.093 に答える
0

考えられる問題:

  • ファイアウォールが接続をブロックしている可能性があります。
  • インスタンス名は、接続文字列で指定されたものと同じではありません。
  • 接続文字列が別のポートを指定しているか、SQLServerがデフォルトの1433ではなく別のポートで実行されている
于 2012-04-30T22:49:52.600 に答える