【解決法】AccessViolationExceptionエラー(ODP.NET)Oracle12c

DB

PC:Windows10
Oracle12cのDBとOracleClient(64bit)をインストールしました。
VB.NETのアプリからODP.NETでDBに接続しようとすると
以下のようなメッセージが出て接続できませんでした。

ハンドルされない例外のため、プロセスが中止されました。
例外情報:
System.AccessViolationException

コネクションのOpenのところで発生。
他の同じような設定の端末(Win10、Oracle Client12c)からODP.NETで上記のデータベースに接続すると、問題なく繋がるが、他複数台で発生するエラー。
環境変数、GACも同じ設定。
OSの再インストールからやり直しても同じエラーが発生。

結局のところ、
原因はいまだ不明ですが以下の方法でエラーなく動作することができました。

Oracle.DataAccess.dllをGACに再登録。
(OracleClientのOraProvCfgにて)

以下、その手順です。

1.管理者権限でコマンドプロンプトを開き、ORACLE_HOMEにOracleClientのディレクトリパスを設定

SET ORACLE_HOME=D:\oracle\client\product\12.1.0\client_1

2.OraProvCfg.exeが格納されているディレクトリへ移動

cd /d %ORACLE_HOME%\ODP.NET\bin\4

3.Oracle.DataAccess.dllをGACに登録

OraProvCfg /action:gac /providerpath:%ORACLE_HOME%\ODP.NET\bin\4\Oracle.DataAccess.dll

4.Policy.4.121.oracle.dataaccess.dllをGACに登録

OraProvCfg /action:gac /providerpath:%ORACLE_HOME%\ODP.NET\PublisherPolicy\4\Policy.4.121.oracle.dataaccess.dll

5.Oracle.DataAccess.resources.dllをGACに登録

OraProvCfg /action:gac /providerpath:%ORACLE_HOME%\ODP.NET\bin\4\Oracle.DataAccess.resources.dll

6.PCを再起動
結果、GACの再登録です(;^ω^)
なぜそうなったのかは、不明。
これだからWindowsは・・・・・。

タイトルとURLをコピーしました