2011-08-05 11 views
0

Oracleデータベースに接続しようとしているDelphiアプリケーションがありますが、プロバイダ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プロバイダを試しましたか? Microsoftのものよりもはるかに更新されています。これは公式に推奨されていません。 ADO/OleDBなしで、Oracleへの直接接続を使用する方がよいでしょう - たとえばhttp://www.torry.net/pages.php?id=549またはhttp://blog.synopse.info/post/2011/を参照してください。 07/09/SynDBOracle%3A - オープンソース - ネイティブOracleアクセス –

答えて

2

あなたの住所にサービス名が不足しているようです。

tnsnames.oraファイルを設定し、設定したdata_sourceパラメータの代わりにデータ・ソースとしてエントリを使用します。利用可能な手順は、on the faqに従ってください。以下のような

または使用使用接続文字列 '//ホスト[:ポート]/[SERVICE_NAME]' データソース用:// INGPSP:1521/ServiceNameは

Oracleの場合、両方のMicrosoftとOracleのOLEDBプロバイダがある既知BLOBに問題があります。可能であれば、別の接続方法を使用してください。

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で定義されているデータベース名です。 (潜在的なエラーは少なくなります)、プログラムを再コンパイルすることなく(開発データベースと本番データベースの切り替えなど)、別のデータベースに変更することができます。

関連する問題