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

SQL Anywhere 12.0.1 » SQL Anywhere サーバー データベース管理 » データベースの開始とデータベースへの接続 » SQL Anywhere データベース接続 » 接続のトラブルシューティング

 

CommLinks=TCPIP 接続パラメーターを使用した SQL Anywhere データベースーサーバーの検出

注意

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 クライアントは、TCP/IP を経由して HOST プロトコルオプションに指定されたアドレスに接続しようとします。複数のアドレスが指定された場合、クライアントは、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 ユーティリティ (dbns12)を参照してください。

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

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

    • ファイアウォール、ルーター、またはゲートウェイによってブロックされる 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 ファイルを更新します。