2

サーバーを SQL Server のフェールオーバーとして追加しようとしていますが、それはポートを使用していません。1443ポートを使用しています2776。指定しようとしていますが、試したことはすべてうまくいきませんでした。どうすればそれができますか?

private String url = "jdbc:sqlserver://server1:2776;DatabaseName=db;failoverPartner=server2";

次の構成を試しましたが、どれも機能しませんでした。

  1. ...failoverPartner=server2:2776
  2. ...failoverPartner=server2,2776
  3. ...failoverPartner=server2\\db

しかし、毎回例外が発生します。

  1. com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host server2, port 1433 has failed. Error: "connect timed out. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".

  2. com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host server2:2776, port 1433 has failed. Error: "null. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".

  3. com.microsoft.sqlserver.jdbc.SQLServerException: ホスト サーバー 2、2776、ポート 1433 への TCP/IP 接続に失敗しました。エラー: 「null。接続プロパティを確認し、SQL Server のインスタンスがホスト上で実行されていて、ポートで TCP/IP 接続を受け入れていること、ポートへの TCP 接続をブロックしているファイアウォールがないことを確認してください。」.

4

1 に答える 1

1

ドキュメントから、JDBC ドライバーを使用して SQL Server に接続する - 接続プロパティのドキュメントの設定、プロパティfailoverPartner:

注:ドライバーは、接続文字列の failoverPartner プロパティの一部として、フェールオーバー パートナー インスタンスのサーバー インスタンス ポート番号を指定することをサポートしていません。ただし、プリンシパル サーバー インスタンスの serverName、instanceName、および portNumber プロパティと、フェールオーバー パートナー インスタンスの failoverPartner プロパティを同じ接続文字列で指定することはサポートされています。

非常に紛らわしい言い方ですが、フェールオーバー サーバーのポート番号を指定できないようです。


KB-2284190 から Microsoft から (接続文字列の failoverPartner 属性でポート番号を使用すると、アプリケーションはミラー パートナー サーバーに接続できません) 私はほとんど同じことを読んでいます:

原因

どちらのエラー メッセージも、SQL Server JDBC ドライバー (すべてのバージョン) が FailoverPartner 接続文字列属性のポート番号の解析をサポートしておらず、接続情報を解決するために DNS および SQL Server Browser サービス (名前付きインスタンスのみ) に依存しているために発生します。パートナーサーバー用。症状セクションで説明されている条件が満たされている環境では、JDBC ドライバーはパートナー サーバー情報を解決できないため、上記のエラー メッセージが表示されます。

SQL ミラーリング インフラストラクチャのこの動作は仕様です。このため、Microsoft JDBC ドライバー バージョン 3.0 は、<server_name>[\<SQL_Server_instance_name>] の形式のフェールオーバー パートナー属性値のみをサポートします。

解像度

この問題を回避するには、データベース ミラーリングが関係する環境で次のいずれかの方法を使用します。

  • ミラーリング構成の一部である SQL サーバーの既定のインスタンスについては、それらが既定のポート 1433 で TCP 接続をリッスンしていることを確認してください。

  • 名前付きインスタンスの場合、SQL ブラウザー サービスが実行されていること、ポート 1434 がネットワーク上でブロックされていないこと、およびサーバー B が隠しインスタンスとして構成されていないことを確認します。


結論として、次のいずれかを実行します。

  • ポート 1433 で TCP をリッスンするようにフェールオーバー サーバーを指定します。
  • 名前付きインスタンスを作成し、 as を指定しfailoverPartnerますserver_name\instance_name。SQL Server Browser サービスが実行中で、ポート 1434 がブロックされていないことを確認してください。
于 2016-11-14T11:54:02.417 に答える