SQL Anywhere の クライアントとサーバ間の ODBC 接続の問題の診断

概要:この文書では、Adaptive Server Anywhere (SQL Anywhere) で一般的な ODBC 接続の問題について説明します。

クイック・チェック

  • ODBC データ・ソースでは、コンピュータ名ではなくデータベース・サーバ名を指定します。
  • ODBC データ・ソースの開始行は空白にします。
  • サーバとクライアントの接続の場合は、データ・ソースでデータベース・サーバ名とデータベース名を指定します (サーバに複数のデータベースがある場合)。
  • TCP/IP を使用する場合は、クライアントとサーバで相互に ping を実行できるかどうかを確認します。これは、DOS プロンプトで ping <server_ip> と入力することで確認できます。
  • ドライブをサーバにマッピングしてファイルを転送します。
  • 複数のネットワーク・カードがサーバまたはクライアントに取り付けられていて、TCP/IP を使用している場合は、host=<server_ip> と myip=<local_ip> をサーバとクライアントで指定します。
  • IPX を使用している場合は、サーバのアドレスはサーバで -z スイッチを指定して通信リンクに関する診断情報を表示することで確認できます。必要に応じて、アドレスを 16 進数から 10 進数に変換します。ホスト・アドレスのフォーマットは、ネットワーク/ノードになります。
  • IPX を使用している場合は、サーバのアドレスはサーバで -z スイッチを指定して通信リンクに関する診断情報を表示することで確認できます。必要に応じて、アドレスを 16 進数から 10 進数に変換します。ホスト・アドレスのフォーマットは、ネットワーク/ノードになります。
  • ASA (SQL Anywhere) 用のデフォルトのポートは 2638 です。場合によっては、別のポートを指定します。

データベース・サーバ名の特定

dbsrv6 c:\path\dbfile.db
database server name = dbfile

dbsrv7 c:\path\dbfile.db -n database_name
database server name = database_name

dbsrv8 -n server_name c:\path\dbfile.db
database server name = server_name

dbsrv6 -n server_name c:\path\dbfile.db -n database name
database server name = server_name

一般的なエラー・メッセージ

Unable to Initialize requested communication links (要求された通信リンクを初期化できません)

原因:間違ったサーバ名を指定しています。

解決策:

  • マシン名とデータベース・サーバ名の対応を確認します。
  • [ネットワーク] タブでネットワーク・プロトコルを確認します。
  • [ネットワーク] タブでネットワーク・プロトコルを確認します。

 

Connection failed: request to start/stop database denied (接続に失敗しました:データベースの起動/停止要求が拒否されました)

原因: 間違ったデータベース名を指定しています。

解決策:

  • サーバの起動時に、データベース・ファイルの後に -n を指定してデータベース名を変更していないかどうかを確認します。

Connection failed: database engine not running (接続に失敗しました:データベース・エンジンが実行されていません)

原因:クライアントがサーバを認識できません。

解決策:

  • TCP/IP を使用する場合は、クライアントとサーバで相互に ping を実行できるかどうかを確認します。実行できない場合は、ネットワークに問題があります。
  • [ODBC設定] の [ネットワーク] タブで、ネットワーク・プロトコルを選択します。プロトコルの後に host=xxx.xx.xx.xx のように指定することで、クライアントがサーバを特定できるようになることがあります。これでも特定できない場合は、
    host=xxx.xx.xx.xx;dobroadcast=no;myip=xxx.xx.xx.xx と入力してみてください。

Server not found (サーバが見つかりません)

原因: 間違ったデータベース名を指定しているか、クライアントがサーバを認識できません。

解決策:

  • データベース・サーバが実行されていることを確認します。
  • サーバのマシン名ではなく、データベース・サーバ名を指定します。
  • サーバとクライアントで同一のプロトコルを使用します。
  • TCP/IP を使用する場合は、クライアントとサーバで相互に ping を実行できるかどうかを確認します。実行できない場合は、ネットワークに問題があります。
  • [ODBC設定] の [ネットワーク] タブで、ネットワーク・プロトコルを選択します。
  • プロトコルの後に host=<server_ip> のように指定することで、クライアントがサーバを特定できるようになることがあります。
  • これでも特定できない場合は、host=<server_ip>;dobroadcast=no;myip=<local_ip> と入力してみてください。
  • 特定の通信プロトコル設定 (IPX TCP/IP NetBIOS NetDG) をデバッグまたは確認します。

Port dll not found (ポート dll が見つかりません)

原因: dbport6.dll がパスに存在しないか、古いバージョンを検索しています。

解決策:

  • Adaptive Server Anywhere (SQL Anywhere) をパスに追加します。
  • win95 または win98 の場合は、autoexect.bat を編集して ASA (SQL Anywhere) をパスに追加します。
  • WINNT の場合は、[コントロール パネル] の [システム] で ASA (SQL Anywhere) をパスに追加します。

Too many connections to database (データベースへの接続が多すぎます)

原因: データベース・サーバのライセンスがありません。

解決策:

  • dblic を dbsrv6、dbsrv7、dbsrv8 に対して実行します。指定するパラメータの詳細については、DOS プロンプトで dblic と入力するか、doc 47921 を参照してください。
  • サーバに接続しているユーザ数を確認してください。必要に応じて、ライセンスを追加購入してください。
  • アプリケーションが実行している接続数を確認してください。

それでもデータベース・サーバに接続できない場合

他のリソース: