2011-07-03 12 views
0

ネットワーク環境でFirebird DBにアクセスするプログラムを作成しました。2台以上のコンピュータでネットワークを介してinterbase/firebird dbにアクセスする方法

ネットワークの2つの異なるポイントでネットワーク経由でDBに正常にアクセスします。

しかし、私は二つのプログラムを開くと同時に、この例外がDBに接続しようとし、第2のプログラム、にスローされます。

アクセスするためにどのように

を「自分のユーザー名とパスワードはdefiniedされていません」ファイアバードDBを同時に2つの接続で?

+1

「あなたのユーザー名とパスワードが定義されていません」では、同時接続に制限があることは示唆されていません。これは、1つのクライアントが不正なFirebirdログイン認証情報を使用していることを示しています。両方のプログラムが同じログイン資格情報と接続の詳細を使用していますか? – Sam

+0

2番目のアカウントを作成し、別のログインを使用してみましたか? Interbaseでは、デフォルトで同じアカウントで複数のサインオンを行うことができますが、これが起きていることを確認するために簡単に2番目のアカウントを作成できます。 –

+2

データベースに接続するためにどのコンポーネントを使用していますか? TCPを使用して接続する必要がありますが、詳細は実際のコンポーネントセットによって異なります。例えば、IBXは 'DatabaseName'プロパティを持つ' TIbDatabase'コンポーネントを持っているので(例えば、あなたには "connection"コンポーネントがありません)、Interbase Expressを使用している場合、サムの答えは正しいのですが、これは役に立ちません。スティーブの方法もおそらく正しいですが、IBXには 'server'プロパティがありません。データベース名にそのプロパティを指定します。また、ユーザー名とパスワードを手動で入力せずにログインダイアログを表示しないことを示すエラーメッセージも表示されます。 –

答えて

0

FirebirdデータベースがFirebirdサーバーを実行しているコンピュータでホストされていることを確認してください。

ieデータベースを持つコンピュータにFirebird Serverをインストールします。

あなたのアプリがインストールされているクライアントPCから、Firebirdサーバーに接続してデータベースにアクセスしていることを確認してください。つまり、Delphiアプリケーションがデータベースに接続するために使用しているコンポーネントのうち、「サーバー」プロパティをデータベースサーバーマシンのホスト名に設定する必要があります。

これが完了すると、アプリケーションは接続を処理してSQLリクエストを処理し結果を返す方法を知っているFirebirdデータベースサーバにリクエストを行います。

0
あなたは例えば、このようなIPアドレスまたはホスト名とデータベース・パスに先行できるようにする必要があり

ほとんどのDB接続コンポーネント

明らか
MyConnection.Database := '127.0.0.1:C:\Databases\testdb.fdb'; 

両方あなたのプログラムが同じIPアドレスまたはホスト名を指していることを確認し、確認してください彼らが使用するログイン認証情報はそのFirebirdサーバーで定義されます。

すべてのFirebirdサーバーのインストール(埋め込みを除く)は、デフォルトで(同じユーザーを使用していても)複数の接続を処理できますので、気にする必要はありません。クライアントプログラムが、接続しようとしているサーバに適用される入力(つまり、dbネットワークパスとFirebirdサーバのログイン認証情報)を使用していることを確認してください。接続が制御されるまでSYSDBAを使用してから、クライアント・アプリケーションが使用する固有のログインを作成することを考え始めることができます。

2

これは、Firebirdの埋め込みバージョンを使用することによって発生する可能性があります。これは1つの接続のみを許可します。あなたがインストールしたファイル名を見てください。

それが問題である場合は、それをアンインストールし、TIBDatabaseコンポーネントでは代わりに

+0

上記の答えが最新ではなく、http://www.firebirdsql.org/manual/qsg25-classic-or-super.htmlによるfirebirdのバージョン2.5で "Windows EmbeddedにSuperServerエンジンの代わりにSuperClassicが含まれるようになりました。ファイルロックは共有されているため、1つまたは複数のEmbeddedサーバーと通常のClassicサーバーまたはSuperClassicサーバーから同時にデータベースにアクセスできます。 – dendini

0

をclasicやスーパーサーバのバージョンをインストールし、あなたがParamsプロパティを記入する必要があります。

user_name=sysdba 
password=masterkey 

ごとでFirebirdのインストールLAN内のコンピュータをこのデフォルトのパラメータに設定する必要があります。問題のあるコンピュータには、別のアクセス認証情報が必要です。

あなたが火の鳥をアンインストールする必要があり、それらをサービスとスーパーサーバーのオプションを使用して最新バージョンを再インストールし、マーク「レトロためGDI32.DLLを使用して...」

それはあなたのために働いていた場合を教えてください。

関連する問題