ネットワーク環境でfirebirdのDBにアクセスするプログラムを作りました。
通常、ネットワークの2つの異なるポイントでネットワーク経由でDBにアクセスします。
しかし、2 つのプログラムを同時に開くと、DB に接続しようとする 2 番目のプログラムでこの例外がスローされます。
「ユーザー名とパスワードが定義されていません」
2 つの接続で同時に firebird DB にアクセスするには?
これは、1 つの接続のみを許可する組み込みバージョンの firebird を使用していることが原因である可能性があります。インストールしたファイル名を見てください。
それが問題である場合は、それをアンインストールして、代わりにクラシックまたはスーパーサーバーのバージョンをインストールしてください
TIBDatabase
コンポーネントでは、プロパティParams
に次の情報を入力する必要があります。
user_name=sysdba
password=masterkey
LAN内のすべてのコンピューターへのFirebirdのインストールは、このデフォルトのパラメーターに設定する必要があります。問題のあるコンピューターには、別のアクセス資格が必要です。
Firebirdをアンインストールし、サービスとスーパーサーバーのオプションを使用して最新バージョンを再インストールし、「レトロにはgdi32.dllを使用...」とマークする必要があります。
それがうまくいったかどうか教えてください。
ほとんどの db 接続コンポーネントでは、データベース パスの前に IP アドレスまたはホスト名を次のように付けることができます。
MyConnection.Database := '127.0.0.1:C:\Databases\testdb.fdb';
明らかに、両方のプログラムが同じ IP アドレスまたはホスト名を指していることを確認し、使用するログイン資格情報がその firebird サーバーで定義されていることを確認してください。
すべての firebird サーバーのインストール (埋め込みを除く) は、デフォルトで (同じユーザーを使用していても) 複数の接続を処理できます。これについて心配する必要はありません。クライアント プログラムが、接続しようとしているサーバーに適用される入力 (つまり、db ネットワーク パスと Firebird サーバーのログイン資格情報) を使用していることを確認してください。接続を制御できるようになるまで SYSDBA を使用してから、クライアント アプリが使用する一意のログインを作成することを検討してください。
Firebird データベースが、Firebird サーバーを実行しているコンピューターでホストされていることを確認してください。
つまり、データベースのあるコンピュータに Firebird Server をインストールします。
次に、アプリがインストールされているクライアント PC から、Firebird サーバーに接続してデータベースにアクセスしていることを確認します。これは、Delphi アプリがデータベースへの接続に使用するコンポーネントが何であれ、'server' プロパティをデータベース サーバー マシンのホスト名に設定する必要があることを意味します。
これが完了すると、アプリは接続を処理し、SQL リクエストを処理して結果を返す方法を知っている Firebird データベース サーバーにリクエストを送信します。