ODBC 接続の作成で混乱していますが、どうやら 2 つの別々の odbcad32.exe ファイルがあるようです。

ODBC 接続の作成で混乱していますが、どうやら 2 つの別々の odbcad32.exe ファイルがあるようです。

さて、これは私が初めてこれを扱うものなので、少しわかりにくかったり曖昧だったりしてもお許しください。

私は、Hyper-v なしの Windows Server 2008 Standard (6.0、ビルド 6002) を搭載したサーバーを持っています。このサーバーから小さな Web サイトを運営しており、Web サイトから入ってくる情報を Microsoft Access データベースに保存しています。ODBC 接続を開くために作成した PHP は、ラップトップのテスト環境でこの Web サイトを作成したときに正常に動作したため、正しいものであると確信しています。

現在発生している問題は、2 つの異なる odbcad32.exe があるようですが、1 つには .accdb ファイル用のドライバーがなく、.mdb ファイル用のドライバーしかないようです。もう 1 つには、両方のドライバーがあります。

私が言及する最初のものには、「Driver do Microsoft Access (.mdb)」というタイトルのドライバーがあり、2 つ目のものには、「Microsoft Access Driver (.mdb, .accdb)」というタイトルのドライバーがあります。最初の odbcad32.exe にアクセスするには、C:\Windows\SysWOW64\odbcad32.exe に移動し、必要なドライバーがあると思われるものにアクセスするには、コントロール パネル -> 管理ツール -> データ ソース (ODBC) に移動し、システム DNS タブで新しい接続を作成します。

コントロールパネルからアクセスするファイルに変更を加えても、変化は見られませんが、SysWOW64 で odbcad32.exe ファイルを使用すると、返されるエラーに変化が見られます。私が気づいた主な違いは、コントロールパネルの方法で ODBC 接続をセットアップすると、ODBC 接続が見つからないというメッセージが表示されるのに対し、SysWOW64 で .mdb 接続を作成した (.accdb ファイルを指すようにした) 場合は、次のように表示されることです。

Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt.

つまり、SySWOW64 の odbcad32.exe バージョンが「正しい」バージョンとして認識されているようです。これを修正する方法はありますか?

できる限り詳しく説明しようとしましたが、わかりにくい点や抜けている点がありましたらお知らせください。

答え1

system32 の実行可能ファイルは 64 ビット バージョンですが、syswow64 のコピーは 64 ビット バージョンです。それぞれは、実行している実行可能ファイルのアーキテクチャに基づいて、異なるドライバー セットで動作します。

実行するバージョンは、ドライバーをロードする必要がある実行可能ファイルのアーキテクチャによって異なります。

ほとんどの場合、PHP は CGI の 32 ビット プロセスとして実行されますが、環境を再確認し、適切なドライバーがインストールされていることを確認する必要があります。

関連情報