まず、OracleBulkCopy
を使用するためにOracle.DataAccess.dll
を使用したいと思います。
データベースから読み取り、Oracleで一括コピーを実行するために必要なすべてのdllを知りたい。現在、データベースからのすべての読み取りを実行するために1つのDLLのみを使用しており、Oracle.ManagedDataAccess.Client
を使用しています。しかし、それを使用して一括コピーを実行することはできません。
ユーザーのためにODP.NETをインストールしたくありません。プログラムに直接dllを含めたいです。したがって、32ビットおよび64ビットでOracle.DataAccess.dll
を使用できるようにするために最低限必要なdllを知りたいです。
これに関する古い投稿があることは知っていますが、静かで古く、リストされているdllは古くなっています。イベントの一部が見つかりません。
ODAC12のODP.netをインストールし、リストされているすべてのdllをこの post で取得しました。 post でも試してみました。リストされたDLLはバージョン11を示しています。
接続を開き、テーブルを読み取り、別のテーブルにまとめるダミープロジェクトを作成しました。リストにあるDLLをプロジェクトのルートの投稿からコピーし、Oracle.DataAccess.dll
をプロジェクトに含めました。
プログラムを64ビットで実行すると、次のエラーが発生します。
ファイルまたはアセンブリをロードできませんでした 'Oracle.DataAccess、バージョン= 4.121.2.0、カルチャ=ニュートラル、PublicKeyToken = 89b483f429c47342'
32ビットで実行すると、次のエラーが発生します。
ロードできませんDLL 'OraOps12.dll':指定されたモジュールが見つかりませんでした。(HRESULTからの例外:0x8007007E) "
私が含めたdllは次のとおりです。
私はなんとかそれを働かせました。
プロジェクトを対象とするODACの適切なバージョンをダウンロードします。
必要なバージョン(32ビットと64ビット)に応じて、空のフォルダーに解凍します。
instantclient_12_1
Windowsの検索バーで* .dllを検索して、すべてのdllをフォルダー化します。つかむ必要があります:
oci.dll
ociw32.dll
orannzsbb12.dll
oraociei12.dll
oraons.dll
odp.net4
またはodp.net20
フォルダは、.NETバージョンに応じて、この2つのdllです。
OraOps12.dll
Oracle.DataAccess.dll
これらの32ビットDLLまたは64ビットDLLをコピーして、プロジェクトの出力パスに直接配置します。たとえばC:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug
。
出力パスをポイントして、プロジェクトのOracle.DataAccess.dllを参照します。
同様の問題が発生しました。ソリューションとして、Oracleデータアクセスコンポーネント(odac ODTwithODAC122010.Zip)をインストールします。
Oracle Instant Client(または他のバージョンのOracle Client)をインストールしていないようです。これは、アンマネージODP.NETプロバイダーの前提条件です。
Oracle Instant Clientをインストールすれば大丈夫です。さもなければあなたはトラブルを起こすだけです。