質問
Microsoft は、Access 用のデータベース ドライバーである Jet の 64 ビット バージョンをリリースしないことを選択しました。誰か良い代替案を知っていますか?
Jet がサポートする必要な具体的な機能は次のとおりです。
- 複数のユーザーがネットワーク経由でデータベースに接続できます。
- ユーザーは、Windows エクスプローラーを使用して、データベースが開いているときに破損の危険を冒さずにデータベースをコピーできます。Access は現在、顧客のニーズに十分な信頼性を持ってこれを実行しています。
- .Net を必要とせずに C++ でうまく動作します。
私が検討した、うまくいかないと思われる代替案 (ただし、私の理解が間違っている可能性もあります):
- SQLite:複数のユーザーがネットワーク経由でデータベースに接続すると、データベースが破損します。
- 火の鳥:使用中のデータベースをコピーすると、元のデータベースが破損する可能性があります。
- SQLサーバー:使用中のファイルはロックされており、コピーできません。
- VistaDB:これは .Net 固有のもののようです。
- 32 ビットでコンパイルし、WOW64 を使用します。64 ビット機能を使用しない場合でも、64 ビットでコンパイルする必要がある別の依存関係があります。
解決
幸いなことに、過去 2 年間で状況は変わりました。
Office 2010 は 64 ビット バージョンで利用できるため、Microsoft は Jet Engine の 64 ビット バージョンを作成する必要がありました。による マイクロソフト カスタマー サービスのブログ, 、 Microsoft Access データベース エンジン 2010 再頒布可能パッケージ には、Microsoft Access データベース形式の最新バージョンにアクセスできる 64 ビット ドライバーが含まれています。
他のヒント
- ユーザーは、データベースが開いている間、破損の危険を冒さずにデータベースをコピーできます。
それはできません どれでも 複数のユーザーやプロセスがそれを変更しているデータベース ファイル。
あなたが探しているのは、ポータブルな .mdf ファイルを備えた SQL Server Express です。コピー制限を回避するには、問題のソフトウェアが接続を開いたままにしないようにする必要があります (つまり、切断されたデータ アクセス層を作成します)。
見てみてください http://www.vistadb.net/
@オリオン:同意します。OP は (可能であれば) SQL 2005 Express を使用することをお勧めします。問題は、使用中/接続中に DB をコピーできることです。これは、「使用中」ファイルをコピーできる何らかのバックアップ ツールを使用せずに SQL では問題外です。
もう 1 つの方法は、バックアップを自動化し、ローミング マシンへの復元を行うことですが、ファイルのコピーを取得するだけでは実現するには程遠い状況です。
もう 1 つの選択肢として SQL Server Compact Edition (CE) を検討することもできます。これには64ビットバイナリが含まれていると思います。
データベースのコピーについては、私も Orion と Kev の意見に同意します。
ここで行うことは、64 ビット アプリケーションが COM 経由で通信できる Jet に接続する別の 32 ビット実行可能ファイルを作成することです。
これは Jet なので、「Jet のように動作する」という私の一般的な要件を満たします。私の顧客は 64 ビットのメリットを享受できませんが、他の要件の方が重要です。