Firebird 2.5.1 Embeddedでは複数のクライアントが同時に接続できるようになっていた

以前のバージョンのFirebird Embedded Serverはデータベースを占有していて、一つのクライアントが接続していると、他のクライアントは接続できませんでした。

Firebird 2.5.1 Embeddedでは、複数のクライアントが同時に接続できるようになっていました。
もちろんデータの編集も可能です。

手軽に導入できて高機能なFirebird Embedded Serverが、さらにデータベースの共有もできるようになって、活躍できる場面がいっそう広がりました。

※C++Builder XEとFirebird 2.5.1 Embedded Serverで動作確認をしました。

コメント

  1. はじめまして!

    山本様の記事を拝見しまして
    Firebird 2.5.1 Embedded Server
    を早速DLしました。

    Embedded Serverはよく使っているのですが、

    クライアントから接続できるようになっていたとは思いませんでした。

    私自身Delphi pascal で試してみたのですが、
    正直うまくいきません。

    山本様はどのようにしてクライアントから接続を成功させたのかご教授いただけたらと思います。

    私のところでは、fbembed.dllをgds32.dllと書き換えることで
    PC内での起動には成功しています。

    ご多忙な中恐縮ですが、ヒントだけでも、
    なにとぞよろしくお願いします。

    以下、環境になります。

    データベースへの接続のコードは

    //GetCurrentDir←exeの絶対パスを取得する
    IBDatabase1.DatabaseName := GetCurrentDir+’\’+’data’+’\’+’DATA.GDB’;
    としています。

    PC:AAに
    フォルダに本体アプリとEmbeddedのファイルすべて

    PC:BB
    AAのフォルダを共有して、AAに置いた本体アプリのショートカットだけおいています。

    ポート3050は解放して、アンチウイルスソフトやファイヤーウォールはすべてOFFにしています。

    何か足りないものがあるのでしょうか?

    このようなエラーがかえってきます
    unable to complete network request to host “test”.
    Failed to establish a connection

  2. この記事では、同一パソコン上の複数のアプリケーションから、同じパソコン上にあるデータベースに接続できることを確認しました。
    もしかするとネットワーク越しにアクセスする場合には何らかの制限があるのかもしれませんね。

    データベースには次のようなコードで接続しています。

    IBDatabase1.Connected := false;
    IBDatabase1.LoginPrompt := false;
    IBDatabase1.Params.Clear();
    IBDatabase1.DatabaseName := ‘C:\sample.fdb’;
    IBDatabase1.Params.Add(‘user_name=sysdba’); //ユーザー名
    IBDatabase1.Params.Add(‘password=masterkey’); //パスワード
    IBDatabase1.Params.Add(‘lc_ctype=UNICODE_FSS’); //文字コード
    IBDatabase1.Connected := true;

  3. 山本様

    早速のコメント誠にありがとうございます。
    自分なりに色々と試していこうと思います。

    ご丁寧にコードまで書いていただき感謝しております。
    ご多忙中な中のコメント、誠にありがとうございました。

    大沼

Comments are closed.