Windows7,8,10 32/64bit OS環境下でAccess 32bitのODBC(Oracle Client 10g/11g 32bit)接続を試みると「SQL_HANDLE_ENVでのドライバのSQLAllocHandleは失敗しました。」と表示されてしまい、ODBC経由でOracleテーブルをリンクできない。
このエラーの原因と対処法・解決策のメモです。
クリックできる目次
状況とエラー内容
状況
- ODBC データ ソース (32 ビット)上での接続テストはOK(tnsnames.oraなどの設定に問題なし)
- AccessからODBCを使ってOracleテーブルに接続を試みるとエラー表示
エラー表示内容
Access上でODBC データ ソース から適切なデータソースを選択し、Oracleに接続しようとすると、エラーが発生します。
原因と対処法・解決策
原因
「[Microsoft][ODBC Driver Manager] SQL_HANDLE_ENV でのドライバーの SQLAllocHandle は失敗しました。」との表示内容から、エラーメッセージが表示される現認を調べてみました。
結論だけ簡潔に記載します。
つまり、Accessに対して、適切な権限設定をすれば解決できるということです。
対処法・解決策
解決策①:Accessのプロパティで管理者設定
Accessのプロパティ画面を表示して、上図の赤枠内にチェックを入れ、適用をクリックします。
この設定をすることで、今後Accessは管理者権限で実行されますので、ODBC経由でOracleテーブルをリンクできるようになります。
解決策②:secpol.mscのセキュリティオプション変更
secpol.mscを実行すると、セキュリティオプションを設定する画面が開きますので、その中から、以下の項目を選択し、有効に設定します。
次に、ユーザーアカウント制御設定の変更画面を開き、下図の通りに設定します(デフォルト設定)。
まとめ
「SQL_HANDLE_ENVでのドライバのSQLAllocHandleは失敗しました。」エラーの対応方法として2つの対処法・解決策をご紹介しました。
これは余談ですが、ExcelでOracleODBC接続を実行する場合、対処法①では別の動作に支障がでますので、対処法②をオススメします。Accessの場合はどちらでも構いません。