- - PR -
oo4oによる接続エラーについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-10-09 20:03
お世話になります。
VB.NET2005よりoo4oでORACLE10gに接続するプログラムの メンテナンスを行おうとしたのですが、OpenDataBaseでエラーが発生してしまい、 実行できません。 他のPCでは同様の記述で実行できる場合もあり、原因がどこにあるのかがわかりません。 どなたかご教授お願いいたします。 ■開発環境 OS:Windows2000 SP4 VB:VisualStudio2005 SP1 Oracle:Oracle Client 10.2.0.1.0 ■エラー発生部分のソース Public gOraSession As Object Public gOraDatabase As Object Public Const ORADB_ORAMODE = &H1& Public Const ORADB_NOWAIT = &H2& gOraSession = CreateObject("OracleInProcServer.XOraSession") gOraDatabase = gOraSession.OpenDatabase(サービス名, ユーザー名 & "/" & _ パスワード, ORADB_ORAMODE Or ORADB_NOWAIT) ■現象 CreateObjectでセッションは作成できるのですが、次行のOpenDatabaseでエラーが発生し、 「'System.ArgumentException' の初回例外が Microsoft.VisualBasic.dll で発生しました。」のように表示されてしまいます。 エラーを拾ってメッセージを表示すると、「値が有効な範囲にありません。」というメッセージです。 | ||||||||
|
投稿日時: 2007-10-10 18:17
実行できるPCがあるということは、コードではなく環境の問題ではないでしょうか?
動くものと動かないものを比べないと……… | ||||||||
|
投稿日時: 2007-10-10 18:32
oo4o で接続するときの OraSession.OpenDatabase(service, username & "/" & password, 〜) で指定する service って TNS 接続文字列ですよね。確か。
エラーが出たマシンの %ORACLE_HOME%\network\admin\tnsnames.ora にエントリはありますでしょうか。 SQL*Plus でその接続文字列、ユーザ名、パスワードで接続することは出来ますでしょうか?
_________________ もしもし@RMAN 友の会 [ メッセージ編集済み 編集者: もしもし 編集日時 2007-10-10 18:33 ] | ||||||||
|
投稿日時: 2007-10-10 18:37
Jittaさん
アドバイスありがとうございます。 今日の昼間にODPをアンインストールしレジストリを削除してから、動作するPCに合わせてOracleClient10.2.0.1をインストールして試してみましたが、やはり同様の現象が発生してしまいました。 他に環境の違いというと、動作する環境ではOSがXPでこちらのOSは2000とである、ということくらいしか浮かばないのですが、OSによって動作が変わるといったことがあるのでしょうか? | ||||||||
|
投稿日時: 2007-10-10 18:46
もしもしさん
ありがとうございます。 tnsnames.oraにサービス名のエントリは作成してあり、SQL*PLUSやObjectBrowserによる接続は問題なく行うことができました。 また、他のプログラムで試してみたところODP.NETの場合は同じデータベースに接続することができました。 やはり.NETでoo4oを利用することに問題があるのでしょうか・・・ | ||||||||
|
投稿日時: 2007-10-10 21:21
saki1208です。
異なるバージョンのOracleクライアントがインストールされている ということはないですか? oo4oはすべてのOracle Homeで一つだけしか存在できません。 # よく見ると、OpenDatabaseでエラーですね。 # CreateObjectではないので、それはないか。 ちょっと、言葉足らず。 複数のOracle Homeがあって、oo4oの入っていないOracle Homeが 指定されていないか? のつもりでした。 [ メッセージ編集済み 編集者: saki1208 編集日時 2007-10-10 21:23 ] | ||||||||
|
投稿日時: 2007-10-10 22:06
saki1208さん
ありがとうございます。 この質問を書き込んだ時点では8iのClientと10.2のODPが入っていたのですが、 今はアンインストールして10gのClientのみが入っている状態です。 saki1208さんのおっしゃる通り、CreateObjectは成功しているようで、 イミディエイトウィンドウで「gOraSession.OIPVersionNumber」を調べると 「10.2.0.1.0」と表示されます。 | ||||||||
|
投稿日時: 2007-10-11 11:09
8iClientは完全にアンインストールしましたか? インストーラを使用した通常の手順ではレジストリにゴミが残ります。
regsvr32でシステムに登録している(OracleHomeは見ていない)からじゃないでしょうか? #そして OpenDatabase ではOracleHomeを見ている。 |
1