2012-01-13 99 views
1

我在本地運行Oracle 11g數據庫。我有一個小程序通過VC++的OLEDB在代碼中連接到它(它只運行一些數據庫測試,我確信在進入真實的事物之前我已經掌握了所有的基礎知識)。代碼中的連接信息僅包括提供者,實例名稱,用戶名和密碼。所有這些方面工作正常。如何設置OLEDB連接到遠程數據庫?

//For example, both these ways of connecting work: 
result = dataSource.Open(DATABASE_PROVIDER, DATABASE_NAME, 
         DATABASE_USER_NAME, DATABASE_USER_PASSWORD); 

result = dataSource.OpenFromInitializationString(L"Provider=OraOLEDB.OracleDataSource=orcl;User ID=SYSTEM;Password=admin;"); 

我現在想這個程序發送到其他計算機在我的網絡,並從那裏運行它,連接到我的數據庫我的本地機器上。
我該如何去將其他計算機連接到我的數據庫,以便代碼能夠理解?

我一直在試圖通過IP本地連接而不是「本地主機」,確定我可以簡單地使用相同的代碼和客戶端。在這方面,我嘗試了一些沒有成功的事情:
- 我試圖修改連接字符串以將「數據源」更改爲我的IP,但它無法連接。
- 我曾嘗試從其他連接字符串示例中添加一些參數,但它們不適用於Oracle並且被忽略。
- 我也嘗試修改tnsnames.ora和listener.ora將本地主機更改爲IP地址,但我知道這並不起作用,因爲如果我輸入垃圾它仍會連接。

任何人都有知識可以幫忙嗎?

+0

您正在安裝代碼的其他計算機是否安裝了Oracle客戶端?如果是這樣,哪個版本(即時客戶端,完整客戶端等)?這些機器是否有tnsnames.ora條目,指向要連接的任何數據庫? – 2012-01-13 22:42:51

+0

他們沒有在其他機器上安裝過任何東西,但我確實希望安裝它們。在這些客戶端中修改我的tnsnames.ora會解決我的問題嗎?如果是這樣,爲什麼不在本地機器上調用tnsnames.ora在本地更改任何內容? – Paradoxyde 2012-01-14 06:19:28

回答

0

對於Oracle數據庫,您應該在各自的機器上設置一個新的tnsnames條目,指向您的本地數據庫。然後使用該新的tns名稱作爲數據源。你還需要確保你的本地數據庫實例首先可以被他們訪問。 (順便提一下,這在Oracle Express中默認沒有啓用。)

我通常也使用msdaora作爲數據提供程序而不是OraOLEDB取得了更大的成功。

+0

在這種情況下,使用OraOLEDB不是可選的。另外,我沒有使用Express,我使用的是11g企業版,我是否仍然有權設置?感謝您的回覆,但有一件事我不明白。如果它使用tnsnames.ora連接,那麼如何在本地機器上修改該文件實際上不會阻止我在本地連接?我必須明確告訴它使用它嗎? – Paradoxyde 2012-01-14 23:57:12