TECHNOLOGY

FAQ (よくある質問)

対象OS : 全て

QUESTION ( SQ1102104 )

DBクライアントが、接続文字列と違うコンピュータ(HOST)のDBサーバに接続されてしまう場合があり困っています。 ※サーバ起動時のブロードキャストを停止して、サブネット上に同じ名前(ServerName)のサーバを複数立てています。

設定例
サーバ側:dbsrvXX -x tcpip(DoBroadcast=NO) …
クライアント側:”LINKS=tcpip(HOST=my-server);ServerName=myserver;UID=user;PWD=password”…

ANSWER

SQL Anywhereのデフォルトでは、サーバ名(ServerName)による検索(ブロードキャスト)が最優先であり、接続文字列で指定したコンピュータ(HOST)は、ブロードキャストが到達できない端末への接続を行う為の追加設定として機能しておりますので、サブネット上に同じ名前のサーバを複数立てた場合、予想される動作です。 
このような場合に、接続文字列で指定したコンピュータ(HOST)へ確実に接続する為には、以下のような設定の追加を行ってください。 ・サーバ側設定
ブロードキャスト・リスナーの停止
dbsrvXX -x tcpip(DoBroadcast=NO;BroadcastListener=NO) …

・クライアント側設定
ブロードキャスト送信の停止
“LINKS=tcpip(HOST=my-server;DoBroadcast=NONE);ServerName=myserver;UID=user;PWD=password” …

上記オプションの詳細については、オンラインマニュアルのネットワーク・プロトコル・オプションをご参照下さい。
なお、サブネット上に同じ名前のサーバを複数立てることは推奨いたしません。