2011-08-05 58 views
0

有一個delphi應用程序,我試圖連接到Oracle數據庫使用提供程序MSDAORA.1,但問題在於連接。即將發生的Oracle錯誤消息是「發生Oracle錯誤,但無法從Oracle檢索錯誤消息」發生Oracle錯誤,但無法從Oracle檢索錯誤消息

我能夠使用Oracle10g客戶端連接到數據庫。

Connection String: Provider=MSDAORA.1; 
User ID=murat; 
Password = murat; 
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST= INGPSP)(PORT=1521))(CONNECT_DATA=(SID=INGPSP))); 
Persist Security Info=False; 

請提供您的專家意見可能是什麼原因?

+0

您是否嘗試使用Oracle OleDB提供程序?它比微軟的更新更新,這是官方棄用。您應該更好地使用與Oracle的直接連接,而不使用ADO/OleDB - 例如,請參閱http://www.torry.net/pages.php?id=549或http://blog.synopse.info/post/2011/ 7月9日/ SynDBOracle%3A-開源天然-Oracle的訪問 –

回答

2

服務名稱似乎缺少在您的地址中。

設置一個tnsnames.ora文件,並將該條目用作數據源而不是您設置的data_source參數。按照可用步驟on the faq

或者利用使用連接字符串,如 '//主機[:端口]/[SERVICE_NAME]' 爲您的數據源:// INGPSP:1521 /服務名稱

對於Oracle,微軟和甲骨文OLEDB提供商是已知的遇到BLOB問題。如果可以,請使用另一種連接方式。

0

我覺得很奇怪的是你的HOST和SID是一樣的。 HOST是網絡上機器的名稱,SID是該機器上的數據庫實例。我在我們的網絡上爲機器DB19上的PRD3數據庫(DB19上有多個數據庫)創建了以下ConnectionString。我能夠用真實的用戶名和密碼成功連接到數據庫。

Provider=MSDAORA.1; 
Password=123456; 
User ID=abc; 
Data Source="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db19)(PORT=1521))(CONNECT_DATA=(SID=prd3)))"; 
Persist Security Info=True 

通常我使用的數據源是TNSNAMES.ORA中定義的數據庫名稱。鍵入(更少潛在錯誤)少得多,可以在不重新編譯程序的情況下更改爲另一個數據庫(例如在開發數據庫和生產數據庫之間切換)。