2011-07-03 65 views
0

我製作了一個訪問網絡環境中的Firebird數據庫的程序。如何通過兩臺或多臺計算機的網絡訪問interbase/firebird db

我通過網絡在網絡的兩個不同點上正常訪問數據庫。

但是,如果我打開兩個程序同時此異常被拋出第二方案,該方案試圖連接到DB:

「您的用戶名和密碼不definied」

如何訪問firebird數據庫同時有兩個連接?

+1

「您的用戶名和密碼未定義」不表示對同時連接有限制。它表明一個客戶端使用不正確的firebird登錄憑證。你確定兩個程序使用相同的登錄憑證和連接細節嗎? – Sam

+0

您是否嘗試創建第二個帳戶並使用其他登錄名?雖然我非常確定Interbase默認允許多個用戶使用同一個帳戶登錄,但您可以輕鬆創建第二個帳戶來驗證這是發生了什麼。 –

+2

你用什麼組件連接數據庫?您需要使用TCP連接,但顯然細節取決於實際的組件集。例如,Sam的答案雖然正確,但如果使用Interbase Express,則沒有用,因爲IBX有一個具有「DatabaseName」屬性的「TIbDatabase」組件(即:您沒有「連接」組件)。史蒂夫的方法可能也是正確的,但同樣,IBX沒有「服務器」屬性,您可以在數據庫名稱中指定該屬性。此外,您的錯誤消息建議您在不手動提供用戶名和密碼的情況下取消登錄對話框。 –

回答

0

確保Firebird數據庫託管在運行Firebird服務器的計算機上。

即在有數據庫的計算機上安裝Firebird服務器。

然後從安裝了應用程序的客戶端PC上,確保您通過連接到Firebird服務器來訪問數據庫。這意味着無論您的Delphi應用程序使用哪個組件連接到數據庫,都需要將「服務器」屬性設置爲數據庫服務器計算機的主機名。

完成此操作後,您的應用程序將向Firebird數據庫服務器發出請求,該服務器知道如何處理連接並處理SQL請求並返回結果。

0

大多數數據庫連接組件應該讓你的IP地址或主機名,這樣,例如先於數據庫路徑

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

顯然確保兩個你的程序指向相同的IP地址或主機名,並確保他們使用的登錄憑證在Firebird服務器上定義。

所有Firebird服務器安裝(嵌入式除外)可以默認處理多個連接(即使使用相同的用戶),您不必擔心這一點。只要確保客戶端程序正在使用它們試圖連接到的服務器上的輸入(即db網絡路徑和firebird服務器登錄憑證)。您可以直接使用SYSDBA,直到獲得控制權,然後開始考慮爲您的客戶端應用程序創建唯一的登錄名以供使用。

2

這可能是由於使用firebird的嵌入式版本造成的,它只允許1個連接。看看你安裝的文件名。

如果是這樣,那麼問題卸載並安裝CLASIC或超級服務器版本而不是

+0

注意上面的答案並不是最新的,根據http://www.firebirdsql.org/manual/qsg25-classic-or-super.html提供的firebird版本2.5「Windows Embedded現在包含SuperClassic而不是SuperServer引擎。文件鎖是共享的,因此一個或多個嵌入式服務器和常規Classic或SuperClassic服務器可以同時訪問數據庫。「 – dendini

0

TIBDatabase組件,你必須填寫的Params屬性搭配:

user_name=sysdba 
password=masterkey 

在每一個火鳥安裝局域網中的計算機必須設置爲此默認參數。有問題的計算機必須具有不同的訪問憑據。

您必須卸載火鳥並重新安裝使用服務和超級服務器選項的最新版本,並選中「使用GDI32.DLL復古......」

告訴我,如果爲你解決。

相關問題