Host 接続パラメーターを使って TCP/IP 経由でデータベースサーバーを検出しようとしている SQL Anywhere クライアントは、次の手順を使ってサーバーを検出します。
データベースサーバーが見つからない場合は、サーバーが見つからなかったというエラーが返されます。別のエラーが発生した場合は、接続はそれ以上の手順を行うことなく失敗します。データベースサーバーが見つかりません。を参照してください。
クライアントは、データベースサーバーへの接続に成功した場合、データベースに接続しようとします。データベースの検出を参照してください。
手順 1:データベースサーバーアドレスキャッシュ (sasrv.ini) を確認する 接続文字列に Host 接続パラメーターは含まれているものの ServerName は含まれていない場合、SQL Anywhere クライアントは sasrv.ini ファイルを使用できません。 手順 2:Host 接続パラメーターで指定されたアドレスに TCP/IP 接続を試みるを参照してください。
クライアントは、ServerName 接続パラメーターによって指定されたデータベースサーバー名に一致するエントリをクライアント内の sasrv.ini ファイルで確認します。
一致するキャッシュエントリが見つからない場合、クライアントは直接 TCP/IP 接続を試みます。手順 2:Host 接続パラメーターで指定されたアドレスに TCP/IP 接続を試みるを参照してください。
キャッシュエントリが ServerName 接続パラメーターと、Host 接続パラメーターで指定されたアドレスの両方に一致する場合、クライアントはキャッシュに示されている IP アドレスへの TCP/IP 接続を試みます。
クライアントは、この IP アドレスを使ってデータベースサーバーに接続する場合、データベースサーバーの名前と ServerName で指定された値を比較します。
データベースサーバー名が一致する場合、接続は成功します。
データベースサーバー名が一致しない場合、クライアントはその sasrv.ini ファイルからエントリを削除し、直接 TCP/IP 接続を試みます。手順 2:Host 接続パラメーターで指定されたアドレスに TCP/IP 接続を試みるを参照してください。
クライアントは、接続できない場合、その sasrv.ini ファイルからエントリを削除し、直接 TCP/IP 接続を試みます。手順 2:Host 接続パラメーターで指定されたアドレスに TCP/IP 接続を試みるを参照してください。
UNIX 上のデータベースサーバーアドレスキャッシュファイル名は .sasrv.ini. です。高速の接続のための sasrv.ini でのデータベースサーバーアドレス情報のキャッシングを参照してください。
手順 1:例 ホスト名が kangaroo、IP アドレスが 10.25.13.5 のコンピューターがあるとします。joey という名前のデータベースサーバーがこのコンピューターのポート 49152 で実行中です。
接続文字列 Host=kangaroo;ServerName=joey
に対して、クライアントはサーバー名 joey と一致するエントリをその sasrv.ini ファイルで検索します。キャッシュ内の IP アドレスは 10.25.13.5:49152 です。クライアントは指定された Host 名のアドレスと 10.25.13.5 を比較します。アドレスが一致するので、クライアントは TCP/IP 経由で
10.25.13.5:49152 に接続してから、接続したサーバーの名前が joey であることを確認します。接続は成功です。
手順 2:Host 接続パラメーターで指定されたアドレスに TCP/IP 接続を試みる 複数のアドレスが指定された場合、クライアントは、Host 接続パラメーターに指定された順序で各アドレスに接続しようとします。クライアントは、接続に成功するまで、またはすべてのアドレスを試してみるまで接続を試みます。
アドレスにポートが含まれる場合、クライアントは、そのアドレスと指定されたポート番号への TCP/IP 接続を試みます。ポートが指定されない場合、クライアントはデフォルトポートである 2638 で指定されたアドレスの TCP/IP 接続を試みます。
クライアントは、データベースサーバーに接続し、ServerName が指定された場合、データベースサーバーの名前と ServerName で指定された値を比較します。
データベースサーバー名が一致する場合、接続は成功です。クライアントはその sasrv.ini ファイルを更新します。
データベースサーバー名が一致しない場合、クライアントは UDP サーバー検索要求を使って接続しようとします。手順 3:UDP データベースサーバー検索要求を送信するを参照してください。
クライアントがデータベースサーバーに接続して ServerName が指定されない場合、接続は成功です。
クライアントが接続できず、ServerName が指定された場合、クライアントは UDP サーバー検索要求を使って接続しようとします。手順 3:UDP データベースサーバー検索要求を送信するを参照してください。
クライアントが接続できず、ServerName が指定されない場合、接続は失敗します。
手順 2:例 ホスト名が kangaroo、IP アドレスが 10.25.13.5 のコンピューターがあるとします。joey という名前のデータベースサーバーは、このコンピューターのポート 49152 で実行中です。クライアントがこのサーバーに接続されたのはこれが初めてなので、キャッシュされていないアドレスが sasrv.ini ファイルに存在します。
接続文字列 Host=kangaroo:49152;ServerName=joey
に対して、クライアントは TCP/IP 経由で 10.25.13.5:49152 に接続してから、接続したサーバーの名前が joey であることを確認します。接続は成功なので、クライアントはその sasrv.ini ファイルを更新します。
手順 3:UDP データベースサーバー検索要求を送信する SQL Anywhere クライアントは、接続文字列に ServerName 接続パラメーターが含まれており、Host 値がポートを指定しないときにだけ、UDP データベースサーバー検索要求を送信します。UDP サーバー検索要求は、指定されたアドレスでポート 2638 に送信されます。
デフォルトでは、同一のコンピューター上のすべてのデータベースサーバー (Mac OS X を実行しているコンピューターを除く) は、ポート 2638 で UDP パケットを受信します。Mac OS X では、1 つのサーバーだけがポート 2638 で UDP パケットを受信できます。データベースサーバーが UDP サーバー検索要求を受信すると、データベースサーバーは、その名前と UDP 要求で指定された名前を比較します。名前が一致する場合、データベースサーバーはその IP アドレスとポート番号を含む UDP 応答パケットを送信し戻します。一致するデータベースサーバーだけが応答パケットを送信します。
デフォルトでは、クライアントは UDP 応答を 5 秒間待ちます。応答が受信されない場合、このプロセスがタイムアウトするまで UDP パケットが毎秒再送信されます。
クライアントが UDP 応答パケットを受信すると、クライアントはパケットで指定されたアドレスとパケットにポートへの TCP/IP 接続を試みます。
クライアントがデータベースサーバーに接続できる場合、接続は成功です。クライアントはその sasrv.ini ファイルを更新します。
UDP パケットは次のデータベースサーバーを検出できません。
ポート 2638 からの受信を行わない Mac OS X 上で実行中のデータベースサーバー。ServerPort (PORT) プロトコルオプションを参照してください。
-sb 0 オプションが指定されているデータベースサーバー。-sb dbeng12/dbsrv12 サーバーオプションを参照してください。
ファイアウォール、ルーター、またはゲートウェイによってブロックされる UDP 要求の送信元であるデータベースサーバー。ファイアウォール経由の接続を参照してください。
これらすべての場合で、Host 接続パラメーターにデータベースサーバーのポートを指定することが、クライアントに接続の成功を許可します。
手順 3:例 ホスト名が kangaroo、IP アドレスが 10.25.13.5 のコンピューターがあるとします。joey という名前のデータベースサーバーは、このコンピューターのポート 49152 で実行中です。クライアントがこのサーバーに接続されたのはこれが初めてなので、キャッシュされていないアドレスが sasrv.ini ファイルに存在します。
接続文字列 Host=kangaroo;ServerName=joey
において、クライアントは TCP/IP 経由で 10.25.13.5:2638 に接続しようとして、失敗しました (手順 2)。接続文字列にポート番号が指定されていないので、クライアントは UDP サーバー検索要求をアドレス 10.25.13.5:2638
に送信します。データベースサーバー joey は、UDP アドレス 10.25.13.5.2638 で受信を待っており、アドレス 10.25.13.5:49152 で応答します。クライアントは TCP/IP 経由で 10.25.13.5:49152
に接続します。接続は成功するので、クライアントはその sasrv.ini ファイルを更新します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |