1

これが私の状況です。SQL Anywhere 11 と同じサーバー上でアプリケーション (Mirth Connect) を実行しています。また、同じネットワーク上に SQL Anywhere 11 を実行している別のサーバーもあります。両方に接続する必要があります。どちらも同じ SQL Anywhere「サーバー名」を使用しています。

JDBC 接続を使用して、いつでもそれらのいずれかに接続する必要があります。ローカル インスタンスに問題なく接続できます。

リモート サーバーへの ODBC 接続をセットアップしようとしました。接続をテストすると、すべて問題ないと表示されます。その後、クエリを実行しようとすると、ローカル サーバーに接続していることに気付きます。これは、両方の SQL Anywhere サーバーが同じ「サーバー名」を使用しているためです。

ODBC 接続を強制的にリモート サーバーに接続するにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

0

接続文字列で IP アドレス (および既定を使用しない場合はポート) を指定する必要があります。接続文字列には、LINKS パラメータと、(少なくとも) 次のオプションが含まれている必要があります。

LINKS=tcpip(HOST=<remote IP address>;PORT=<remote port>;DoBroadcast=None)

リモート サーバーが既定のポート番号 2638 を使用している場合、接続文字列でポート番号を指定する必要はありません。DoBroadcast=Noneそのホストに直接接続する必要があることをクライアント ライブラリに伝えます。デフォルト (バージョン 11 以前) では、そのサーバー名を探してネットワーク上でブロードキャストし、最初に応答したサーバーが優先されます。ローカル マシンにサーバーがあるため、最初に応答する可能性が非常に高くなります。

バージョン 12 以降では、LINKS パラメータ全体を新しい HOST パラメータに置き換えることができます。

HOST=<remote IP address>:<remote port>

これは、上記の LINKS パラメータと同じ動作をします。

PS 各サーバーに一意のサーバー名を付けることをお勧めします。これにより、ホストの IP アドレスをハードコーディングする必要がなくなります。言うまでもなく、2 番目のサーバーをだまして (a) その名前が一意であると考えさせるか、(b) 一意であるかどうかを確認しないようにするために何らかのトリックを使用する必要があることは言うまでもありません。これはデフォルトで行われます。一意のサーバー名を使用する場合、この余分なものは必要ありません。

免責事項: 私は、Sybase で SQL Anywhere エンジニアリングの仕事をしています。

于 2012-05-02T02:22:01.357 に答える