web-dev-qa-db-ja.com

Microsoft.Jet.OleDbとMicrosoft.Ace.OleDbの違い

Classic ASPとMicrosoft Accessでデータにアクセスして表示するために "Microsoft.Jet.Oledb"ドライバーを使用してプログラミングを行ってからかなりの年月が経ちました。

「Microsoft.Ace.Oledb」を使用してMS Excelデータにアクセスする作業を行うように依頼されました。これは、「Microsoft Access 2010 Engine Redistributable」ダウンロードの一部であることがわかりました。

「Microsoft.Jet.OleDb」が「Microsoft.Ace.Oledb」ドライバーに取って代わり、本質的に同じであるか、まったく異なるものかを知りたいのですが。

また、MS Access 2010を購入すると、通常「Microsoft.Ace.Oledb」ドライバーを取得しますか?

51
RT88

これは主に歴史の問題であり、ACEは事実上JETに取って代わりました。

ウィキペディアはあなたの質問に答えます 非常に詳細です。

最も関連するセクションは次のとおりです。

バージョン2007以降のAccessには、当初はOffice Access Connectivity Engine(ACE)と呼ばれていましたが、現在はAccess Database Engineと呼ばれるOffice固有のJetが含まれています。このエンジンは、以前のバージョンのJetエンジンと完全な下位互換性があるため、以前のバージョンのAccessから(.mdb)ファイルを読み書きします。新しい既定のファイル形式(.accdb)が導入され、複数値フィールドなどの複雑なデータ型、添付データ型、メモ型フィールドでの履歴追跡など、Accessにいくつかの改善が加えられています。また、セキュリティと暗号化の改善をもたらし、Microsoft Windows SharePoint Services 3.0およびMicrosoft Office Outlook 2007との統合を可能にします

また、ACEは64ビットドライバーを提供するため、64ビットマシンで使用できますが、JETは使用できません。

このドライバーはWindowsオペレーティングシステムの一部ではありませんが、再頒布可能パッケージとして入手できます。[11]以前は、Jetデータベースエンジンは32ビットのみであり、64ビットバージョンのWindowsではネイティブに実行されませんでした。

質問の2番目の部分については、最近Office 2010をインストールしたため、ACEコンポーネントを個別にダウンロードする必要がありました。リンクから取得しました Microsoft Access Database Engine 2010 Redistributable 。これはおそらく、64ビットWindowsの下に32ビットバージョンのOfficeをインストールしたためです。いずれにしても、必要なファイルはマイクロソフトから簡単に入手できます。

72
dash

基本操作に使用する場合、ドライバーは基本的に同じであり、より複雑なもの(ユニオン、ネストされたクエリなど)と顕著な違いを示します。

個人的な経験に基づいて、ACEは完全に下位互換性のある結果を提供しません。以前の.mdb形式を開いて読み取り/書き込みを行うことができますが、まったく同じクエリのデータ型キャストに変更があります。

たとえば、JETがTEXT(255)の結果を返すために使用されたTEXTフィールドでUNIONを使用する場合、ACEはMEMO?!を返します。

これは、BIまたはCrystal Reportsなどのレポートツールと組み合わせて多くの問題を引き起こす可能性があります。

6
Milan Oparnica