C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Oracle.DataAccess.dll参照方法について


(過去ログ 177 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■101747 / inTopicNo.1)  Oracle.DataAccess.dll参照方法について
  
□投稿者/ JYAM (1回)-(2023/04/14(Fri) 10:40:29)

分類:[.NET 全般] 

開発環境
windows10
VisualStdio2012 VBで開発
OracleClient12c 32bit

実行環境
@windows10+OracleClient12c 32bit
Awindows11+OracleClient19c 32bit


ClickOnceにて配布しています。
Oracle.DataAccess.dll(4.121.2.0)※発行時にダウンロードする設定

Aの環境にインストールした際、Oracle接続時にエラーとなります。
@の環境では正常に動作

Oracle.DataAccess.dllを(2.122.19.1)にして発行すると、
Aでは正常、@でエラーとなります。

Oracle.DataAccess.dllのバージョン不一致によることは分かりましたが、
インストール先のPCにあわせて変更することは可能なのでしょうか?

アドバイスお願い致します。
引用返信 編集キー/
■101748 / inTopicNo.2)  Re[1]: Oracle.DataAccess.dll参照方法について
□投稿者/ 魔界の仮面弁士 (3618回)-(2023/04/14(Fri) 12:03:01)
No101747 (JYAM さん) に返信
> Oracle.DataAccess.dll(4.121.2.0)※発行時にダウンロードする設定

Oracle.DataAccess はバージョン不一致問題を引き起こしやすいので
Oracle.ManagedDataAccess の利用をおすすめします。
こちらなら Oracle Client の事前インストールも不要ですし。


> Oracle.DataAccess.dllを(2.122.19.1)にして発行すると、
> Aでは正常、@でエラーとなります。

対応する .NET Framework バージョンが異なります。
https://docs.oracle.com/cd/E16338_01/win.112/b66456/InstallVersioningScheme.htm

上書き動作ではなく、別フォルダーに Side-by-side 配置するようにしてみてください。
引用返信 編集キー/
■101749 / inTopicNo.3)  Re[2]: Oracle.DataAccess.dll参照方法について
□投稿者/ JYAM (2回)-(2023/04/14(Fri) 13:27:35)
No101748 (魔界の仮面弁士 さん) に返信
> ■No101747 (JYAM さん) に返信
>>Oracle.DataAccess.dll(4.121.2.0)※発行時にダウンロードする設定
>
> Oracle.DataAccess はバージョン不一致問題を引き起こしやすいので
> Oracle.ManagedDataAccess の利用をおすすめします。
> こちらなら Oracle Client の事前インストールも不要ですし。
>
>
>>Oracle.DataAccess.dllを(2.122.19.1)にして発行すると、
>>Aでは正常、@でエラーとなります。
>
> 対応する .NET Framework バージョンが異なります。
> https://docs.oracle.com/cd/E16338_01/win.112/b66456/InstallVersioningScheme.htm
>
> 上書き動作ではなく、別フォルダーに Side-by-side 配置するようにしてみてください。

魔界の仮面弁士様

返信ありがとうございます。

> 上書き動作ではなく、別フォルダーに Side-by-side 配置

Oracle.DataAccess.dllを、バージョン毎に別フォルダに配置ということでしょうか?
\12C\Oracle.DataAccess.dll
\19C\Oracle.DataAccess.dll
この場合、どのように参照すればよいのでしょうか?
引用返信 編集キー/
■101750 / inTopicNo.4)  Re[3]: Oracle.DataAccess.dll参照方法について
□投稿者/ 魔界の仮面弁士 (3619回)-(2023/04/14(Fri) 14:29:01)
2023/04/14(Fri) 17:23:51 編集(投稿者)

No101749 (JYAM さん) に返信
> \12C\Oracle.DataAccess.dll
> \19C\Oracle.DataAccess.dll
exe と同じフォルダーに対して、適切なバージョンの DLL を配置してください。

もしくは ODP.NET を GAC に登録するなどの方法もありますが…
https://oracle.programmer-reference.com/oracle-odpnet-gac/
インストール先や探索パスの仕様はバージョンによって異なるため、
詳細は対応バージョンごとのマニュアルで確認してください。
https://docs.oracle.com/cd/E15817_01/win.111/e05791/install004.htm
https://docs.oracle.com/cd/E16338_01/win.112/b66456/InstallODP.htm
https://docs.oracle.com/cd/E62988_01/win.122/b72971/InstallODP.htm#sthref102
https://docs.oracle.com/cd/E82638_01/odpnt/InstallODP.html
https://docs.oracle.com/cd/F25238_01/odpnt/InstallUnmanagedConfig.html


> Oracle.DataAccess.dllを、バージョン毎に別フォルダに配置ということでしょうか?
ODP.NET 付属のマニュアルを、もう一度よく読んでください。
Oracle Client のバージョンも重要ですが、それ以上に
対応 .NET Framework のバージョンの方がより重要だということです。


Oracle.ManagedDataAccess.dll (Oracle Data Provider for .NET Managed Driver) は
それ自体が OracleClient の機能を含んでいるため、DLL を EXE と共に配布するだけで動作します。
tnsnames.ora 等の設定も、.config 内に含められます。


それに対して Oracle.DataAccess.dll (Oracle Data Provider for .NET Unmanged Driver) は、
対応する Oracle Client がインストールされている環境でなければ動作しません。


Oracle.DataAccess.dll のアセンブリバージョンが
1.* のものは .NET Framework 1.0〜1.1 系列向け
2.x.y.z のものは .NET Framework 2.0〜3.5 系列向け
4.x.y.z のものは .NET Framework 4〜4.8.1 系列向け
とわかれており、各系統は同一プロジェクト内では共存利用できません。
ターゲット フレームワークごとに使い分けてください。

詳細は Oracle 開発者ガイド等で確認していただく必要がありますが
2.* でも「.NET Framework 3.5 SP1 以降専用」のものや、
4.* でも「4.5.2、4.6.x および 4.7.xでのみサポート」といった
縛りが存在することがあるので注意してください。実行環境に対しては、
それぞれのバージョンに対応した Visual C++ ランタイムの導入も必要です。

Oracle Client のバージョンは、Oracle Server のバージョンに合わせて選択します。
組み合わせによっては、特定のパッチ適用が必要となるケースなどがありますので、
My Oracle Support サイトにログインして Knowledge Base を検索しておくことをお奨めします。


Oracle Server 21c に接続する場合
 Client 21c/19c なら OK。
 Client 18c/12.2.0/12.1.0 は限定サポート。
 Client 11.2.0 / 11.1.0 は不可。

Oracle Server 19c に接続する場合
 Client 21c/19c/11.2.0.4 なら OK。
 Client 18c/12.2.0/12.1.0/11.2.0.3 は限定サポート。
 Client 11.2.0.2以下/11.1.0 は不可。

Oracle Server 18c/12.2.0 (いずれもサポート期限切れ) に接続する場合
 Client 21c/19c/18c/12.2.0/12.1.0/11.2.0 いずれも限定サポート。
 Client 11.1.0 は不可。

Oracle Server 12.1.0 (サポート期限切れ) に接続する場合
 Client 21c/19c/18c/12.2.0/12.1.0/11.2.0/11.1.0 いずれも限定サポート。

Oracle Server 11.2.0 (サポート期限切れ) に接続する場合
 Client 21c は不可。
 Client 18c/12.2.0/12.1.0/11.1.0 は限定サポート。
 Client 19c/11.2.0 の場合は、Server が 11.2.0.4 以上であれば利用可能。

Oracle Server 11.1.0 (サポート期限切れ) に接続する場合
 Client 21c/19c/18c/12.2.0 は不可。
 Client 12.1.0/11.2.0/11.1.0 は限定サポート

※ここでいう限定サポートとは、以前はサポートされている組み合わせであったが、
 サポート期限が切れたため、障害時の対応が打ち切られたものなどを指します。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -