[All]
InterBaseのデータベースエリアス機能
Résumé: InterBase7.5から追加されたデータベースエリアスについて Delphiからの接続の設定も含め説明します。
概要
InterBase7.5より、データベースエリアスの機能が追加されました。この機能はサーバーのコンテキスト内でデータベースファイルに別名をつけるというものです。この機能を利用すると、データベースファイルへのフルパスを指定することなく、クライアントから接続が可能となります。
エリアスの設定方法
エリアスの設定は、gsecコマンドを使用して行います。
※ここでは InterBase2007を使用し、interbaseのインストールディレクトリを c:\interbase として説明します。またホスト名は localhostを使用します。
- サーバーがインストールされているマシン上で、セキュリティデータベースに接続します。
# gsec –user sysdba –password masterkey –database c:\interbase\admin.ib
- alias_add コマンドでデータベースエリアスを設定します。ここでは empというデータベースエリアスで、付属しているサンプルデータベース employee.gdbを登録します。
gsec> alias_add emp –alias_dbpath c:\interbase\examples\database\employee.gdb
- 登録されているデータベースエリアスの一覧を表示するには alias_dis コマンドを使用します。
gsec> alias_dis
Alias Name: emp
Database Path: c:\interbase\examples\database\employee.gdb
- また、データベースエリアスを削除する場合は、alias_del コマンドを使用します。
gsec> alias_del emp
コマンドラインでの接続
従来、データベースエリアスを使用しない場合は、以下のようにフルパスを指定する必要がありました。(SYSDBAでの接続例)
# isql –user sysdba –password masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect c:\interbase\examples\database\employee.gdb;
Database: c:\interbase\examples\database\employee.gdb, User: sysdba
データベースエリアスを示すには、エリアス名の前に :(コロン)をつけます。ISQLを使用して、コマンドラインから設定したデータベースエリアスを使用して接続するには、以下のように指定します。(SYSDBAでの接続例)
# isql –user sysdba –password masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect :emp;
Database: :emp, User: sysdba
dbExpressでの接続設定
dbExpressでの接続設定ですが、コマンドラインでの接続の時と同様、データベースエリアスを示す、:(コロン)をつけて指定します。
Delphi2007での手順を例にとります。
- プロジェクトマネージャーのデータエクスプロラータブを選択します。
- INTERBASEを選択し、選択した状態でマウスの右ボタンを押し、ポップアップメニューを表示します。
- 表示されたポップアップメニューから「新規接続の追加(A)」を選択します。
- Add New Connection のダイアログが表示されますので、Connection Name に、たとえば ib_alias のような任意の名前を入力し、[OK]ボタンを押します。
- データエクスプローラの INTERBASEのツリーを展開します。
- 今、登録した接続(たとえば ib_alias) を選択し、マウスの右ボタンを押し、ポップアップメニューを表示します。
- 表示されたポップアップメニューから「接続の変更(M)」を選択します。
- 表示された接続エディタ内の Databaseプロパティの部分に、登録したエリアス(ここでは emp)をコロンをつけて指定します。
- [テスト]ボタンを押し、接続できるかを確認します。

IBExpressでの接続設定
IBExpressでの接続設定ですが、コマンドラインでの接続の時と同様、データベースエリアスを示す、:(コロン)をつけて指定します。
Delphi2007での手順を例にとります。
- [ファイル|新規作成|VCL フォームアプリケーション – Delphi for Win32] にて新規アプリケーションを作成します。
- デザインタブを開き、ツールパレットのInterBase カテゴリ内にある TIBDataBaseをダブルクリックし、フォーム上に貼り付けます。
- フォーム上の TIBDataBase を選択し、オブジェクトインスペクタ上のDatabase プロパティに、登録したデータベースエリアス(ここでは emp)をコロンをつけて指定します。
- Active プロパティを True にし、データベースに接続できるか確認します。

注意:
デザイナ上で、TIBDataBaseをダブルクリックすると「データベースコンポーネント設定」のダイアログが表示され、ここでも上記同様に :emp と設定しますが、一度、このダイアログを閉じて、再度表示した際に、:(コロン)が取れた状態で表示されることがありますが、再度:(コロン)を設定しなおす必要はありません。

まとめ
データベースエリアスの機能を使用すると、データベースファイルの正確な位置がわからなくても、クライアントアプリケーションがエリアスによってデータベースを参照できるため、接続をする際のフルパスの記入の必要がなくなるだけでなく、データベースの場所や、名前の変更があった場合でも、gsecを使用して、データベースエリアスを変更するだけで、アプリケーション側の変更を行う必要がなくなります。