- PR -

【VS.NET2003】DLLからODBC経由でOracleへ接続できない

1
投稿者投稿内容
オレンジ
会議室デビュー日: 2006/04/10
投稿数: 8
投稿日時: 2006-09-21 21:47
現在VS.NET2003 + C# + ORACLE7.3 + ODBC環境で、ODBC経由でDBへアクセスするプログラムを生成していますが、ODBC接続(Connectionのオープン時)に、以下のエラーが発生して困っています。 しかも、同じコードをEXEにしてコンソール上から動かすと正常にアクセスでき、DLLにしてaspxページから呼び出すとエラーになります。
ODBCドライバはMicrosoft ODBC for Oracle(2.575.1117.00)を使用しています。

エラー内容:
Error while trying to retrieve text for error ORA-01019 ERROR [IM006] [Microsoft][ODBC Driver Manager] ドライバの SQLSetConnectAttr は失敗しました。 ERROR [01000] [Microsoft][ODBC Driver Manager] ドライバはアプリケーションが要求した ODBC の動作のバージョンはサポートしていません。SQLSetEnvAttr を参照してください。

コード:
OdbcConnection connection; //OdbcConnectionオブジェクト
string connectString; //接続文字列
connectString = "DSN=DataSource;Server=ORCL_DataSource;uid=user;pwd=pass";
connection = new OdbcConnection(connectString);
connection.Open();
↑ここで上記のエラーが発生している

エラー内容から自分なりに調べてみたのですが解決できず、何よりEXEが動いてDLLでエラーになる理由がわかりません。同じDSNを使用してCSEからはアクセスできます。

どなたか原因と解決策を教えていただけないでしょうか。情報が足りないようでしたら追記もします。
よろしくお願いします。

[ メッセージ編集済み 編集者: オレンジ 編集日時 2006-09-21 23:35 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-09-22 01:56
引用:

オレンジさんの書き込み (2006-09-21 21:47) より:

エラー内容から自分なりに調べてみたのですが解決できず、何よりEXEが動いてDLLでエラーになる理由がわかりません。同じDSNを使用してCSEからはアクセスできます。


ORACLE_HOME への ASP.NET ユーザの権限問題は大丈夫ですか?
WindowsForm では動くけれど、 ASP.NET では動かないのでは無いでしょうか
オレンジ
会議室デビュー日: 2006/04/10
投稿数: 8
投稿日時: 2006-09-22 13:20
引用:

引用:
--------------------------------------------------------------------------------


オレンジさんの書き込み (2006-09-21 21:47) より:

エラー内容から自分なりに調べてみたのですが解決できず、何よりEXEが動いてDLLでエラーになる理由がわかりません。同じDSNを使用してCSEからはアクセスできます。

--------------------------------------------------------------------------------


ORACLE_HOME への ASP.NET ユーザの権限問題は大丈夫ですか?
WindowsForm では動くけれど、 ASP.NET では動かないのでは無いでしょうか



かるあさん、ご指摘いただきありがとうございます。
確認したところ、そもそもORACLE_HOMEという環境変数が存在しませんでした。なので、システム環境変数にORACLE_HOMEを追加し、設定したパスへASP.NETユーザ(ASP.NET Machine Account)の権限を追加しました。
そうしたところ、今度はEXE起動時にも同じエラーが発生してしまい、何がなんだかわからなくなってしまいました。
.NET開発は初心者なもので、何から調べればいいかもわからない状態です。何が原因なのか、どなたか教えて下さい。よろしくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-09-22 14:40
引用:

オレンジさんの書き込み (2006-09-22 13:20) より:

確認したところ、そもそもORACLE_HOMEという環境変数が存在しませんでした。なので、システム環境変数にORACLE_HOMEを追加し、設定したパスへASP.NETユーザ(ASP.NET Machine Account)の権限を追加しました。
そうしたところ、今度はEXE起動時にも同じエラーが発生してしまい、何がなんだかわからなくなってしまいました。


このときのエラーの内容はどうなっていますか?

ORACLE_HOME が無くても動くんですか。。。
ORACLE7 は触ったことがないのですが、
ORACLE_HOME の扱いが違うのかもしれませんね。

# レジストリに格納されている ORACLE_HOME の値も気になりますが、
# あまり触らないほうがいいかも。。。
オレンジ
会議室デビュー日: 2006/04/10
投稿数: 8
投稿日時: 2006-09-22 16:51
解決しました!

結論から言いますと、まず作成したORACLE_HOMEをシステム環境変数から削除し、再度EXE、DLL両方を動かしてみました。するとEXEは動きましたので、ORACLE_HOMEは必要ないのでは?と思いました。

引用:
ORACLE_HOME が無くても動くんですか。。。


PATHはOracleのディレクトリに通してあるので、それで見えているようです。

また、ASP.NETユーザにORACLE_HOME配下への権限を設定したと思っていたのですが、ORACLE_HOME直下のみに権限を設定していました。動かないのは当然ですね。。ORACLE_HOME配下全てに権限を与え、DLLを実行すると正常に動作しました。EXEも正常に動作しています。

とりあえず動いたのでORACLE_HOMEについてはもう少し調べてみようと思います。
かるあさん、ありがとうございました。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-09-22 19:12
引用:

かるあさんの書き込み (2006-09-22 14:40) より:
ORACLE_HOME が無くても動くんですか。。。


ORACLE_HOME というのは確か、Oracle 8 か 8i で導入されたように記憶してます。
1

スキルアップ/キャリアアップ(JOB@IT)