▶ Windows 11情報をお求めの方はこちらをクリック

Windows10(64bit)でOracleにAccessのODBC接続ができない原因と対処法・解決策

2 min

Windows7,8,10 64bit OS環境下でAccess 32bitのODBC(Oracle Client 8,9,10g 32bit)接続ができない原因と対処法・解決策のメモです。

実はこの問題にぶち当たったときに、グーグル先生にいろいろなキーワードで聞いてみましたが、原因と解決策について完璧にヒットする記事はみつかりませんでした。

  • tnsnames.oraの設定に誤りはないか?
  • ODBC データ ソース (64 ビット)ではなく、ODBC データ ソース (32 ビット)に登録しているか?

なんて記事は見かけましたが、基本的な設定に問題はないのに、接続できないのです。
ということで、同じ現象で悩んでいる方のために、対処法を紹介します。

この記事でわかること

tnsnames.oraの設定に問題なし、ODBCデータソース(32bit)に登録済み、の環境において、Windows10 64bit × Oracle Client 32bitでODBC接続できない原因と対処法

AccessでOracleにODBC接続できない状況詳細

  • 32bitOS環境では接続できるが、64bitOS環境では接続できない
  • ODBC データ ソース (32 ビット)上での接続テストはOK(tnsnames.oraなどの設定に問題なし)
  • AccessからODBCを使ってOracleテーブルに接続を試みるとエラー表示

この段階ではAccessに原因があるのか、OracleClient側に問題があるのか切り分けできず。

AccessでOracleにODBC接続時のエラー表示内容

ODBC–呼び出しが失敗しました。
[Oracle][ODBC][Ora]ORA-12154: TNS: 指定された接続識別子を解決できませんでした。
[Microsoft][ODBC Driver Manager] ドライバーのSQLSetConnectAttrは失敗しました。

Access上でODBC データ ソース (32 ビット)から適切なデータソースを選択し、Oracleに接続しようとすると、エラーが発生します。

AccessでOracleにODBC接続できない原因

Oracle Client 10g 32bit driverが64bitOSに対応できていないため、呼び出し元(Access実行ファイル)のフルパスに”()”が入っているとエラーが発生します。

32bitOS:Program Files
64bitOS:Program Files (x86) ←パスに()が含まれるとエラー

Accessのインストール先を()が入らない場所に指定することを試みましたが、どうもMicrosoftさんは、これができない仕様にしているようです。

では、どうすればよいのか?

AccessでOracleにODBC接続できないときの対処法

① Oracle Client 11g 32bit 以降にバージョンアップする
② ①ができない場合は、()を含まないシンボリックリンクを作成する

Oracle Client 11g 32bit以降のバージョンは、Access実行ファイルのフルパスに”()”が入っていても、エラーになりません。ただし、10gと11gは完全に互換性があるわけではありませんので、検証が必要です。ちなみに私が使用しているAccess数十種類はすべて正常動作しました。

11gに移行できない場合は、シンボリックリンクを作成することになります。例えば、コマンドプロンプトを管理者権限で起動して、以下を実行します。

mklink /d “C:Program Files x86” “C:Program Files (x86)”

すると、Cドライブの直下に以下のようにフォルダが生成されます。

Program Files x86下のAccessを起動して、ODBC接続をすれば、エラーは発生しません。

Windows10でOracleにAccessのODBC接続まとめ

今回は、Windows7 32bitからWindows10 64bitへのアップグレード検証にて発覚した問題でした。そもそも今どきOracle Client 10g 32bit以下のバージョンは使用されていないかもしれませんが、少しでも誰かのお役に立てれば幸いです。

その他のAccess関連おすすめ記事はこちら

SEパパ

SEパパ

外資系IT企業SE職で2児の父ちゃん!職業柄かリサーチ&問題解決が好き。

幅広いジャンルで「お悩み解決」記事を執筆中。月間最高24万PV。雑誌掲載。

読者様に役立つ情報提供を心がけています。

カテゴリー:

3 件のコメント

  1. 本当に助かりました!ACCESSだと繋がらずに途方に暮れていました。
    シンボリックリンク経由で無事動いています。
    ありがとうございました。

  2. 大変有用な情報ありがとうございます。
    環境変数PATHにてOracleInstantClientのパスをシンボリック経由で指定することで問題解決できました。

    • tamさん、コメントありがとうございます!お役に立てたようで何よりです。また具体的な解決情報の書き込みありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA