发生Oracle错误,但无法从Oracle检索错误消息

时间:2011-08-05 09:55:59

标签: delphi oracle10g delphi-2006

有一个delphi应用程序,我试图连接到Oracle数据库使用提供程序MSDAORA.1,但问题是连接。即将发生的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;

请提供您的专家意见可能是什么原因?

2 个答案:

答案 0 :(得分:2)

您的地址似乎缺少服务名称。

设置tnsnames.ora文件,并使用该条目作为数据源,而不是您设置的data_source参数。按照可用的步骤on the faq

或者使用连接字符串,例如'// host [:port] / [service_name]'作为数据源:// INGPSP:1521 / ServiceName

对于Oracle,已知Microsoft和Oracle OleDB提供程序都存在BLOB问题。如果可以,请使用另一种连接方式。

答案 1 :(得分:0)

我看到的很奇怪,你的主机和SID是一样的。 HOST是网络上计算机的名称,SID是该计算机上的数据库实例。我在网络上的机器DB19(DB19上有多个数据库)上为PRD3数据库创建了以下ConnectionString。我能够使用真实用户ID和密码成功连接到数据库。

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中定义的数据库名称。键入(更少的潜在错误)并且可以更改为另一个数据库而无需重新编译程序(例如在开发数据库和生产数据库之间切换)。