FireDACからInterBaseへ接続すると、unavailable databaseエラーが発生する
対象となるIDE製品
- RAD Studio/C++Builder/Delphi XE3~XE5
問題
FireDACからInterBaseへ接続すると、unavailable databaseエラーが発生することがあります。
原因
原因として考えられるのは、以下の2つです。
- InterBaseサーバープロセスを起動していない
- 同一PC内に複数のInterBaseがインストールされている
特に(2)に該当するケースとしては、XE3、XE4、XE5 にはすべて InterBase XE3 Developer エディションが付属しており、デフォルトのインストールオプションでは、InterBase XE3をそれぞれインストールします。通常、PC内にインストールしているInterBaseが1つであれば、特に問題はありませんが、同一PC内に複数バージョンのInterBaseをインストールされている(共存している)場合には、マルチインスタンスの機能が適用されるため、アクセスする方法が少し複雑になります。
マルチインスタンスとは、InterBase 7.5から導入された同一PC内に複数のInterBaseプロセスを実行するための仕組みで、異なるインスタンス名とポート番号によって登録し、他のInterBase(プロセス)のインスタンスと競合しないように管理されています。例えば、XE3=>XE4=>XE5の順番でインストールを行なうと、インスタンス名とポート番号は以下のように登録されます。
インスタンス名 | ポート番号 | 対応するバージョン |
---|---|---|
gds_db | 3050 | XE3 |
rad_xe4 | 3054 | XE4 |
rad_ibxe3 | 3054 | XE5 |
但し、インストールしているバージョンやその順番によって、対応するインスタンス名とポート番号が異なることがあります。
なお、XE3、XE4、XE5のどれか1つをインストールしている場合は、gds_db 3050(デフォルト)のインスタンスが作成されます。このように、同一PC内に複数のインスタンスが存在し、そのうちのどれか1つのインスタンスが実行されているとIDE ツールおよびアプリケーションからInterBaseのローカルクライアントを利用して接続できないことがあります。
解決
もし同一PC内に複数の InterBase インスタンスが存在する場合、一度全てのInterBaseインスタンスの実行を停止してください。InterBaseインスタンスの起動/停止は、InterBaseのサーバーマネージャから行なうことができます。
Windows 7の場合は、Windowsスタートメニューの[Embarcadero InterBase XE3]-[Interbase Server Manager]から実行できます
Windows 8の場合は、スタートメニューの[すべてのアプリ]から実行できます
なお、Windows サービスとしてセットアップしてある場合は、システムの[サービス]コントロール パネルでプロセスを停止し、スタートアップの種類を”手動”に変更してください。
そして、どのInterBaseインスタンスを実行するか決めて、そのインスタンスを再起動してください(ここでは、インスタンス名=gds_db、ポート番号=3050のInterBaseインスタンスを起動します)。
最後にFireDACのアプリから InterBaseへの接続は、TCP ループバックを介して接続します。FireDACでTCP ループバックを指定するには、TFDConnection.ParamプロパティのServerパラメータを以下のように設定します。
(ここでは、”localhost/3050”として設定します。)
もし上記の設定でもInterBaseへ接続できない場合は、
- 指定したポート番号が間違っている
- 指定したInterBaseインスタンスを実行していない
といった理由が考えられますので、もう一度、実行しているインスタンスや設定を確認してください。
関連情報
RAD Studio/Delphi/C++Builder XE3/XE4/XE5に付属するInterBase XE3 Developer Editionに関する注意事項は ここを参照してください。