フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: 何度も出てくるので Firebird の接続方法
DEKO
管理者
投稿数: 2691
何度も出てくるので Firebird の接続方法
on: 2013/08/15 15:56 Thu

一般的な Firebird の接続は以下のようになります。

Firebird サーバが別 PC の場合ですね。この場合には、クライアント DLL さえあれば Firebird サーバへ接続できます。Firebird サーバをインストールする必要はありません。既に Firebird サーバへ接続できている PC から GDS32.DLL / fbclient.dll を抜いて持ってくるだけで動作します (Firebird のインストーラでクライアントインストールを行ってもいいのですが、DLL コピーの方が手っ取り早いです)。

次の接続方法もメジャーですね。

ローカル PC に Firebird サーバとクライアントをインストールして自分自身へ接続する方法です。サーバとして localhost (または 127.0.0.1) を指定する必要があります…本当は TCP/IP 以外のローカル接続もあるのですが、少なくとも Firebird においてはループバック接続の方が確実ですし高速です。

次は Embedded Server を使った接続です。GDS32.DLL (fbembed.dll) はクライアント DLL であり、Embedded Server そのものでもあります。

Embedded Server では Firebird Server の機能が使えませんので、IBConsole 等も使えません。

今度は 32bit / 64bit アプリケーションでの接続です。サーバが 32bit だろうが 64bit だろうが、32bit アプリケーションでは Firebird 32bit 版のクライアント DLL が、64bit アプリケーションでは Firebird 64bit 版のクライアント DLL が必要となります。

例えば、Delphi の IDE でデータエクスプローラを使うには、64bit Windows 上で 64bit アプリケーションを作っていようが、必ず 32bit 版のクライアント DLL が必要となります。これは IDE が 32bit アプリケーションであるからです。

一連の接続方法は Interbase にもそのまま当てはまります。Firebird Embedded Server に相当するものは Interbase To-Go Edition / IBLite です。

See Also:
[Firebird (Interbase フォーク)]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=861

[Firebird Embedded Server]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=862

[Interbase]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=882

DEKO
管理者
投稿数: 2691
Re: 何度も出てくるので Firebird の接続方法
on: 2013/08/15 16:06 Thu

注意点ですが、Delphi をインストールしている場合、大抵 Interbase がインストールされています。Firebird は Interbase からのフォークなので DLL 名やポートがカブってしまいます。

  • 複数の GDS32.DLL / ibclient64.dll が存在しないかチェックしてください。
  • DLL のプロパティを見て、それが本当に Firebird 由来のものかチェックしてください。
  • Interbase を使う予定がないのであればアンインストールして PC を再起動してください。
  • PC 再起動後に %System32% (32bit OS) や %SysWOW64% (64bit OS) に Interbase 由来の GDS32.DLL が存在しないか確認してください。

Interbase / Firebird 両対応のツールは、Firebird のクライアント DLL を Interbase のクライアント DLL 名にリネームする事でどちらにも対応できるようになっています。逆に言えば、Firebird の DBX ドライバのように専用のものはリネームした DLL を必要としません。

# IBX で Firebird を扱う場合にはクライアント DLL のリネームが必要です。
# IBConsole で Firebird を扱う場合にはクライアント DLL のリネームが必要です。

要約すると、

  • Interbase (32bit 版) をインストールすると GDS32.DLL がインストールされる。
  • Interbase (64bit 版) をインストールすると ibclient64.dll がインストールされる。
  • Firebird (32bit 版) をインストールすると GDS32.DLL にリネームされた fbclient.dll (32bit 版) がインストールされる。
  • Firebird (64bit 版) をインストールしても ibclient64.dll にリネームされた fbclient.dll (64bit 版) はインストールされない (確か)。
  • Firebird と Interbase のクライアント DLL は同じ名前だが別物。
  • Embedded Server の DLL と通常のクライアント DLL は別物。
  • Interbase 対応のアプリケーションやミドルウェアを Firebird で使うには Interbase の DLL と同じ名前にリネームした Firebird のクライアント DLL が必要。
  • 混ぜるな危険。

このようになります。

それと、これは言うまでもない事かもしれませんが、サーバのバージョンとクライアントのバージョンは合わせるようにしてください。また、Embedded Server でない限り TCP/IP 接続を行う事になりますので、ファイアーウォールの影響を受ける事も忘れないようにしてください。

DEKO
管理者
投稿数: 2691
Re: 何度も出てくるので Firebird の接続方法
on: 2013/08/16 16:59 Fri

DB への接続方法ですが、Firebird の場合幾つかあります。

ローカルサーバ&ローカル接続:

  • Firebird Embbedded Server に使用。
  • 接続文字列は "DB へのフルパス" (Ex. C:\TEST\DATA.FDB)。
  • プロセス間通信 (IPC: Inter Process Communication) 接続。
  • Firebird Super Server でも使えるが、パフォーマンスが落ちる。

リモートサーバ&ローカル接続 (TCP/IP):

  • Firebird Super Server / Classic Server に使用。
  • 接続文字列は "ループバックアドレス:サーバから見た DB へのフルパス" (Ex. localhost:C:\TEST\DATA.FDB)。
  • ポート番号を指定する場合は "ループバックアドレス/ポート番号:サーバから見た DB へのフルパス" (Ex. localhost/3050:C:\TEST\DATA.FDB)。
  • サービス名を指定する場合は "ループバックアドレス/サービス名:サーバから見た DB へのフルパス" (Ex. localhost/gds_db:C:\TEST\DATA.FDB)。
  • ループバックアドレスは "localhost / 127.0.0.1 / 自身の IP アドレス" のいずれか。

リモートサーバ&リモート接続 (TCP/IP):

  • Firebird Super Server / Classic Server に使用。
  • 接続文字列は "サーバ名または IP アドレス:サーバから見た DB へのフルパス" (Ex. FirebirdServer:/share/firebird/data.fdb)。
  • ポート番号を指定する場合は "サーバ名または IP アドレス/ポート番号:サーバから見た DB へのフルパス" (Ex. FirebirdServer/3050:/share/firebird/data.fdb)
  • サービス名を指定する場合は "サーバ名または IP アドレス/サービス名:サーバから見た DB へのフルパス" (Ex. FirebirdServer/gds_db:/share/firebird/data.fdb)

他の接続方法もあります。

リモート接続 (IPX/SPX):

  • 現在の Firebird では利用不可 (古い Firebird でのみ利用可能)。
  • 接続文字列は "サーバ名@DB へのフルパス" (Ex. FirebirdServer@C:\TEST\DATA.FDB)。

リモート接続 (NetBEUI / 名前付きパイプ):

  • 現在の Windows では利用不可 (別途インストール / Windows 7 以降では存在しない)。
  • Firebird Super Server / Classic Server に使用。
  • 接続文字列は "\\サーバ名\DB へのフルパス" (Ex. \\FirebirdServer\C:\TEST\DATA.FDB)。
  • 書式が似ているが、共有フォルダ (SMB) へのアクセスではない。
DEKO
管理者
投稿数: 2691
Firebird と Interbase の違い
on: 2015/03/11 17:13 Wed

歴史的な話をすると Interbase 6.0 が Open Edition というオープンソースになった時に別実装として作られたのが Firebird で、

Firebird 1.0 = Interbase 6.0

 
です。その後 Interbase は商用に戻り、それぞれ独自の道を歩む事となりました。つまり、Firebird は Interbase 6.0 からのフォークという事になります。Interbase には幾つかの種類がありますが、それについては別トピックに記述があります。

[Interbase (Delphi Forum)]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=882.0

ここで問題 (混乱) の元となるのが Firebird と Interbase のエディションについてです。以下に Firebird と、それと同等の Interbase の対比を書いてみたいと思います。

[Firebird SuperClassic Server / Super Server / Classic Server]
Interbase Server Edition がこれに該当します。C/S 接続が可能で、TCP/IP 接続が可能です。

[Firebird Embedded Server]
Interbase To-Go Edition / IBLite がこれに相当します。To-Go Edition は有償です。IBLite は Delphi 等の開発ツールにライセンスが付属している事があり、Firebird とは異なりモバイルにも対応しています。

Firebird に存在しないエディションとして Developer EditionDesktop Edition があります。

[Interbase Developer Edition]
開発者がテスト目的で使える Interbase です。無償で利用できますが配布はできません。また、48h で接続が切れます。テスト用途なので、TCP/IP 接続もできます。

[Interbase Desktop Edition]
有償かつスタンドアロン (一台) で使うための Interbase です。ループバック接続を含む TCP/IP 接続はできません。古い Delphi にはテスト用にこれが付属していました。

Firebird と Interbase の情報はある程度共有できるのですが、当然ながら違いもあります。Firebird を使っていて、Interbase にしたいと思った場合には、まず "どのエディションが必要なのか?" を吟味しましょう。簡単に言えば C/S or TCP/IP 接続で使うなら "Server Edition" 一択という事になります。

本当は TCP/IP 以外のローカル接続もあるのですが…

 
これは Interbase Desktop Edition に見られるローカル接続の事を言っています (Firebird にもありますが)。この "ローカル接続" は TCP/IP によるループバック接続ではなく、Interbase サーバーアプリケーションとのプロセス間通信の事を指します (ひとつ上のトピックにある "ローカルサーバ&ローカル接続" を参照の事)。サービスではなくプロセス間通信なので、事前に Interbase サーバーアプリケーションを起動しておく必要があります。

Interbase Desktop Edition と Interbase To-Go Edition の違いがハッキリしないと思われるでしょう。両者の用途はほぼ同じですが、動作原理が異なります。Desktop Edition はプロセス間通信によるローカル C/S (Windows のみで動作) であるのに対し、To-Go Edition は完全なスタンドアロン環境 (Windows / OS X / iOS / Android 対応) です。前者は TCP/IP 接続はしないものの、ローカルサーバを起動する必要がありますが、後者はクライアントモジュールだけで動作します。

See Also:
[InterBase 製品エディション (Embarcadero)]
http://www.embarcadero.com/jp/products/interbase/product-editions

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.033 sec.