MDBファイルへのアクセス

備忘録です。

ちょっと前に Accessで作成しているシステムをWebシステムに置き換える案件の仕事をしている時に、MDBファイルを覗く(データ抽出)する必要があった。そのときに使っていたPCには、ランタイム版ではない、本物の? 32bit版のMicrosoft Accessがインストールされていたので問題は無かったのですが、今使っているPCはMicrosoft Officeは入っていない。

いや、たしか、OLEDB経由でMDBファイルは読めるはず・・・と思ってコントロールパネルからODBCドライバが入っているかどうか見てみたけど・・・残念・・・入ってなかった・・・。

ググったら、「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント(https://www.microsoft.com/ja-jp/download/details.aspx?id=13255)」をインストールすれば読める、ということで、64bit版のドライバを入れて、Visual Studio 2015 community のサーバーエクスプローラで確認。

で、一応32bit版も入れとくか・・・と思って、32bit版もダウンロードしてインストーラーを立ち上げたら、先に64bit版を削除しろ! と怒られた(^^;

ええい、/passive オプションをつけてバージョン・チェックなしでもう一度インストーラーを起動して、問答無用で入れてやりましたよ!32bit版はバージョン違いのものが既にインストールされてた。この辺よく分からん。

odbc64  odbc32

左が %WINDIR%\system32\odbcad32.exe右が%WINDIR%\syswow64\odbcad32.exe
32bit/64bitアプリケーションでちゃんと動くのかな?今度確認してみよ。

でも、これ、下記ような制限があるんだけど、意味が分からない。MDBファイルを読むために使っちゃダメなの? いいの? 分からん・・・

  1. Jet の全般的な代替としての使用。Jet の全般的な代替が必要な場合は、SQL Server Express Edition (英語版) が必要です。
  2. サーバー側アプリケーション内での Jet OLEDB プロバイダーとしての使用。
  3. 一般的なワード プロセッサ、スプレッドシート、またはデータベース管理システムとしての使用。 つまり、ファイル作成の手段としての使用。Microsoft Office または Office オートメーションを使うと、Microsoft Office でサポートされるファイルを作成することができます。
  4. システム サービスまたはサーバー側プログラム (コードがシステム アカウントの下で実行されるもの、複数のユーザー ID を同時に処理するもの、高度に再入可能で動作が不安定になるもの) による使用。これには、ユーザーがログインしていないときにタスク スケジューラーから実行されるプログラムや、ASP.NET などのサーバー側 Web アプリケーションから呼びだされるプログラム、COM+ サービスの元で実行される分散コンポーネントなどがあります。