Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ データベース管理 » SQL Anywhere データベース接続 » データベース接続 » トラブルシューティング:接続

 

トラブルシューティング:CommLinks=TCPIP 接続パラメータによるデータベースサーバの検索方法

注意

CommLinks (LINKS) 接続パラメータは、HOST または ServerPort (PORT) 以外の TCP/IP プロトコルオプションを指定する必要がある場合のみ使用することをおすすめします。それ以外の場合は、Host 接続パラメータを使用してください。Host 接続パラメータを参照してください。

接続文字列に CommLinks と Host の両方は指定できません。

Host 接続パラメータは、HOST プロトコルオプションとは別のものです。HOST プロトコルオプションは、CommLinks 接続パラメータによって使用されます。 Host (IP) プロトコルオプション (クライアント側のみ)を参照してください。

CommLinks 接続パラメータを使って TCP/IP 経由でサーバを検出しようとしている SQL Anywhere クライアントは、次の手順を使ってサーバを検出します。

データベースサーバが見つからない場合は、サーバが見つからなかったというエラーが返されます。別のエラーが発生した場合、接続はそれ以上の手順を行うことなく失敗します。データベースサーバが見つかりません。を参照してください。

クライアントは、データベースサーバへの接続に成功した場合、データベースに接続しようとします。トラブルシューティング:データベースサーバの検索方法を参照してください。

  • 手順 1:データベースサーバアドレスキャッシュ (sasrv.ini) を確認する   接続文字列が HOST プロトコルオプションを含んでいるものの、ServerName 接続パラメータは含んでいない場合、LocalOnly プロトコルオプションが YES に設定されるか、DoBroadcast プロトコルオプションが NONE に設定されるので、SQL Anywhere クライアントは直接 TCP/IP 接続を試みます。つまり、SQL Anywhere クライアントは、データベースサーバアドレスキャッシュまたは LDAP サーバを使用しません。手順 3:HOST プロトコルオプションで指定されたアドレスに TCP/IP 接続を試みるを参照してください。

    クライアントは、ServerName 接続パラメータで指定されたデータベースサーバ名に一致するエントリをクライアント内の sasrv.ini ファイルで確認します。接続文字列が HOST プロトコルオプションも含む場合、キャッシュエントリは指定されたホストアドレスにも一致する必要があります。

    一致するキャッシュエントリが見つからない場合、クライアントは LDAP を使ってデータベースサーバを検出しようとします。手順 2:LDAP サーバでサーバ名を調べるを参照してください。

    一致するキャッシュエントリが見つかった場合、クライアントはキャッシュでリストされている IP アドレスに TCP/IP 接続を試みます。

    • クライアントがこの IP アドレスを使ってデータベースサーバに接続し、VerifyServer プロトコルオプションが No に設定される場合、接続は成功します。 VerifyServerName (VERIFY) プロトコルオプション (クライアント側のみ)を参照してください。

    • クライアントは、この IP アドレスを使ってデータベースサーバに接続し、VerifyServer が Yes (デフォルト) に設定される場合、クライアントはデータベースサーバの名前と ServerName で指定された値を比較します。データベースサーバ名が一致する場合、接続は成功します。データベースサーバ名が一致しない場合、クライアントは、その sasrv.ini ファイルからエントリを削除し、LDAP を使ってデータベースサーバを検出しようとします。手順 2:LDAP サーバでサーバ名を調べるを参照してください。

    • クライアントは、接続できない場合、その sasrv.ini ファイルからエントリを削除し、LDAP を使ってデータベースサーバを検出しようとします。手順 2:LDAP サーバでサーバ名を調べるを参照してください。

    注意

    UNIX 上のデータベースサーバアドレスキャッシュファイル名は .sasrv.ini. です。 トラブルシューティング:接続を高速化するための sasrv.ini へのデータベースサーバアドレス情報のキャッシュ方法を参照してください。

    • 手順 1:例   ホスト名が kangaroo、IP アドレスが 10.25.13.5 のコンピュータがあるとします。joey という名前のデータベースサーバがこのコンピュータのポート 49152 で実行中です。

      接続文字列 CommLinks=TCPIP(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:LDAP サーバでサーバ名を調べる   SQL Anywhere クライアントは、SQL Anywhere クライアントとデータベースサーバのコンピュータが LDAP サーバを使用するように設定されているときに、ServerName 接続パラメータに一致するエントリの LDAP サーバをクエリします。ネームサーバとして LDAP を使用した接続を参照してください。

  • 手順 3:HOST プロトコルオプションで指定されたアドレスに TCP/IP 接続を試みる   HOST プロトコルオプションが指定されない場合、SQL Anywhere クライアントは UDP サーバ検索要求を使ってサーバを検出しようとします。手順 4:UDP データベースサーバ検索要求を送信するを参照してください。

    SQL Anywhere クライアントは、HOST プロトコルオプションに指定されたアドレスに TCP/IP 経由で接続しようとします。複数のアドレスが指定された場合、クライアントは、HOST プロトコルオプションに指定された順序で各アドレスに接続しようとします。クライアントは、接続に成功するまで、またはすべてのアドレスを試してみるまで接続を試みます。

    接続文字列にポートが含まれている場合 (HOST プロトコルオプションまたは ServerPort 接続プロパティのいずれか)、クライアントは指定されたアドレスとポート番号への TCP/IP 接続を試みます。ポートが指定されない場合、クライアントはデフォルトポートである 2638 で指定されたアドレスの TCP/IP 接続を試みます。

    • クライアントが指定された IP アドレスを使ってデータベースサーバに接続し、VerifyServer プロトコルオプションが No に設定される場合、接続は成功します。VerifyServerName (VERIFY) プロトコルオプション (クライアント側のみ)を参照してください。

    • クライアントは、指定されたアドレスを使ってデータベースサーバに接続した場合、データベースサーバの名前と ServerName で指定された値を比較します。データベースサーバ名が一致する場合、接続は成功し、クライアントはその sasrv.ini ファイルを更新します。データベースサーバ名が一致しない場合、クライアントは UDP サーバ検索要求を使って接続しようとします。手順 4:UDP データベースサーバ検索要求を送信するを参照してください。

    • クライアントが接続できず、ServerName が指定された場合、クライアントは UDP サーバ検索要求を使って接続しようとします。手順 4:UDP データベースサーバ検索要求を送信するを参照してください。

    • クライアントが接続できず、ServerName が指定されない場合、接続は失敗します。

    • 手順 3:例   ホスト名が kangaroo、IP アドレスが 10.25.13.5 のコンピュータがあるとします。joey という名前のデータベースサーバは、このコンピュータのポート 49152 で実行中です。クライアントがこのサーバに接続されたのはこれが初めてなので、キャッシュされていないアドレスが sasrv.ini ファイルに存在します。

      接続文字列 CommLinks=TCPIP(Host=kangaroo:49152);ServerName=joey に対して、クライアントは TCP/IP 経由で 10.25.13.5:49152 に接続してから、接続したサーバの名前が joey であることを確認します。接続は成功なので、クライアントはその sasrv.ini ファイルを更新します。

  • 手順 4:UDP データベースサーバ検索要求を送信する   SQL Anywhere クライアントは、接続文字列に ServerName 接続パラメータが含まれており、DoBroadcast プロトコルオプションは DIRECT または ALL に設定されているときにだけ、UDP データベースサーバ検出要求を送信します。

    • DoBroadcast=DIRECT または HOST プロトコルオプションが指定された場合、クライアントは UDP サーバ検索パケットを指定されたアドレスに送信します。ポートが指定された場合 (HOST プロトコルオプションまたは ServerPort プロトコルオプションのいずれか)、UDP サーバ検索要求は指定されたポートに送信されます。それ以外の場合、要求はデフォルトポート 2638 に送信されます。

    • DoBroadcast=ALL が指定され、HOST プロトコルオプションが指定されない場合、クライアントは、IP アドレスのそれぞれに対するサブネットのブロードキャストアドレスを判断します。ServerPort プロトコルオプションが指定された場合、クライアントは UDP ブロードキャストサーバ検索パケットを指定のポートに送信します。それ以外の場合、UDP ブロードキャストパケットはデフォルトのポート 2638 に送信されます。

    データベースサーバが起動されたときに -sb 0 オプションが指定されていない限り、すべてのデータベースサーバがポート 2638 で UDP パケットを受信します。データベースサーバが UDP サーバ検索要求を受信すると、データベースサーバはその名前と要求パケットで指定された名前を比較します。名前が一致する場合、データベースサーバはその IP アドレスとポート番号を含む UDP 応答パケットを送信し戻します。一致するデータベースサーバだけが応答パケットを送信します。

    デフォルトでは、クライアントは UDP 応答を 5 秒間待ちます。応答が受信されない場合、このプロセスがタイムアウトするまで UDP パケットが毎秒再送信されます。

    クライアントが UDP 応答パケットを受信すると、クライアントはパケットで指定されたアドレスとポートへの TCP/IP 接続を試みます。

    クライアントがデータベースサーバに接続できる場合、接続は成功です。クライアントはその sasrv.ini ファイルを更新します。

    注意

    UDP パケットは次のデータベースサーバを検出できません。

    • 異なるサブネット上に存在するデータベースサーバ。UDP サーバ検出ブロードキャストパケットは、Broadcast Repeater ユーティリティが使用されない限り、データベースサーバを検索できません。Broadcast Repeater ユーティリティ (dbns16)を参照してください。

    • ポート 2638 からの受信を行わない Mac OS X 上で実行中のデータベースサーバ。ServerPort (PORT) プロトコルオプションを参照してください。

    • -sb 0 オプションが指定されているデータベースサーバ。-sb データベースサーバオプションを参照してください。

    • ファイアウォール、ルータ、またはゲートウェイによってブロックされる UDP 要求の送信元であるデータベースサーバ。ファイアウォール接続を参照してください。

    いずれの場合にも、HOST プロトコルオプションでデータベースサーバのアドレス (ポート番号を含む) を指定することによって、クライアントは正常に接続できるようになります。

    • 手順 4:例   ホスト名が kangaroo、IP アドレスが 10.25.13.5 のコンピュータがあるとします。joey という名前のデータベースサーバは、このコンピュータのポート 49152 で実行中です。クライアントがこのサーバに接続されたのはこれが初めてなので、キャッシュされていないアドレスが sasrv.ini ファイルに存在します。接続は kangaroo と同じサブネット上にあるコンピュータから試行され、このサブネットのブロードキャストアドレスは 10.25.13.255 です。

      接続文字列 CommLinks=TCPIP;ServerName=joey の場合、クライアントは UDP サーバ検索ブロードキャスト要求をブロードキャストアドレス 10.25.13.255:2638 に送信します。データベースサーバ joey は、UDP アドレス 10.25.13.5.2638 で受信を待っており、アドレス 10.25.13.5:49152 で応答します。クライアントは TCP/IP 経由で 10.25.13.5:49152 に接続します。接続は成功するので、クライアントはその sasrv.ini ファイルを更新します。