InterBaseのデータベースエリアスとは何ですか?
目次
問題
InterBaseのデータベースエリアスとは何ですか?どのように使うことができますか?
解説
InterBase7.5で、データベースエリアスの機能が追加されました。この機能はサーバーのコンテキスト内でデータベースファイルに別名をつけるというものです。この機能を利用すると、データベースファイルへのフルパスを指定することなく、クライアントから接続することができます。
このデータベースエリアスの機能を使用すると、データベースファイルの正確な位置がわからなくても、クライアントアプリケーションがエリアスによってデータベースを参照できるため、接続をする際のフルパスの記入の必要がなくなるだけでなく、データベースの場所や、名前の変更があった場合でも、gsecを使用して、データベースエリアスを変更するだけで、アプリケーション側の変更の必要はありません。
解決
エリアスの設定
エリアスの設定は、InterBaseのgsecコマンドを使用して行います。手順は以下です。 (ここでは、interbaseのインストールディレクトリを C:\interBase、ホスト名を localhostとして説明します。)
- コマンドプロンプトで、InterBase Serverがインストールされているマシン上で、セキュリティデータベースに接続します。
cd C:\InterBase\bin gsec –user sysdba –password masterkey –database c:\interbase\admin.ib
- gsecの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
ISQL(コマンドライン)でエリアスを使ってデータベースに接続する
データベースエリアスを使用しない場合は、以下のようにフルパスを指定する必要があります。(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
FireDACでエリアスを使ってデータベースに接続する
FireDACで接続する場合も、コマンドラインでの接続の時と同様、データベースエリアスを示す、:(コロン)をつけて指定します。 FireDACの接続エディタで、Databaseパラメータの箇所に登録したエリアス(ここでは emp)にコロンをつけて指定するだけです。
IBExpressでエリアスを使ってデータベースに接続する
IBExpressで接続する場合も、同様にデータベースエリアスを示す、:(コロン)をつけて指定します。 オブジェクトインスペクタ上で、TIBDataBaseプロパティの箇所に登録したデータベースエリアス(ここでは emp)にコロンをつけて指定します。
オブジェクトインスペクタではなく、デザイナ上で、TIBDataBaseをダブルクリックし、「データベースコンポーネントエディタ」のダイアログ上でも同様に「:emp」を指定して設定できます。一度、このダイアログを閉じて、再度表示した際に、:(コロン)が取れた状態で表示されますが、再度:(コロン)を設定しなおす必要はありません。