Microsoft Jet Database Engine

Microsoft Jet是微軟針對檔案型資料庫所發展的資料庫引擎（Database Engine），它的適用資料來源種類相當多，像是Microsoft Access、Microsoft Excel、dBase等等檔案型資料來源都可以利用Microsoft Jet資料庫引擎來使用SQL指令存取。

目前的Jet引擎最新版本為4.0，並且未來在x64平台上將不再支援。

版本歷程

Jet 1.0 
Microsoft Jet第一個版本是在1992年研發出來，當時的研發代號是「Cirrus」，為Microsoft Access 1.0所使用的資料庫引擎，當時的資料存取元件為DAO（Data Access Object），程式語言為Visual Basic 3.0，DAO本身是一個COM元件，可以由支援COM規格的程式語言所存取，但它當時的功能只適用於Microsoft Access。Jet 1.1於1993年5月發表，首次支援Access以外的資料庫 (FoxPro)。使用保存查询结果，它自动链接到数据库，因此用户可以查看Dynaset并即时看到别人对数据库的修改；用户修改Dynaset的记录能自动存回数据库，无需另写修改数据库内容的SQL语句。如果Dynaset是多表Join操作生成的，则是不可修改。

Jet 2.x 
Jet 2.0在1994年4月與Access 2.0一起發表，它支援了数据完整性，引擎層次資料驗證，ANSI SQL，聯合查詢，子查詢等等功能，DAO也新增了更多完整的物件能力，像是集合、物件、屬性和方法等。同年的10月份，Jet 2.5與Access 2.0 Service Pack和ODBC Desktop Database Driver Kit一起發表，它也是第一個32位元版本的Jet引擎，並開始支援Excel的讀寫能力以及VBA的功能。

Jet 3.x 
Jet 3.0在1995年第三季發表，Jet 3.5則是在1996年第三季發表，與Jet 2.x不同的是，它只有32位元的版本，提供給Windows 95以及Windows NT等作業系統使用，其主要新功能為支援資料庫複製（Replication），多執行緒支援以及動態緩衝區 (dynamic buffer)的能力，並使用全新的索引機制，可加快資料庫的速度，並且擴充DAO的物件模型。采用了Microsoft Rushmore查询优化技术。Jet 3.0引入了隐式事务（Implicit transactions），即在上一条事务提交给数据库后，自动开始了下一条事务。但随后在Windows95平台上发现这对性能有负面影响，Jet 3.5又删除了这一特性。

Jet 4.0 
Jet 4.0是Microsoft發表的最後一個Jet引擎版本，它支援了下列的能力：

Unicode字元儲存支援，使用與Windows NT相同，並且也在Windows 95上版本實作的排序方法。
變更資料型別，讓它更貼近SQL Server，並支援新的decimal資料型別。
Memo欄位可以設定索引。
可壓縮資料型別。
強化SQL讓Jet更符合ANSI SQL-92規範。
更好的安全性，檢視表支援，程序支援。支持SQL命令： CREATE, ADD, ALTER, DROP USER, DROP GROUP, GRANT/REVOKE.
事务的提交與回滚。
強化的表格建立與修改。
支持引用完整性。
連線控制。
使用者清單，允許管理員能決定誰可連到資料庫。
記錄層級鎖(record locking model )；此前版本只支援頁鎖，当时数据页为2KB。都支持“悲观锁”（pessimistic locking）与乐观锁（optimistic locking），前者在请求锁定时可立刻获得锁，后者在被编辑的记录保存时才获得锁.
與Microsoft SQL Server的雙邊複製能力。

连接字符串与支援的資料庫

连接字符串
参数HDR： HDR=Yes，指示第一行是标题，不做为数据使用；HDR=NO，指示第一行不是标题，做为数据来使用。
参数IMEX ( IMport EXport mode )：
0 表示Export mode，“汇出模式”，只能用来做“写入”用途
1 表示Import mode，“汇入模式”，只能用来做“读取”用途。
2 表示Linked mode (full update capabilities)，“链接模式”，可同时支援“读取”与“写入”用途
如果执行Insert Into语句时却出现异常：“操作必须使用一个可更新的查询”，这时可能需要把IMEX的值从2改为1尝试。

Microsoft Access 

Access是Jet最主要的支援對象之一，因此對Access的支援是最充足的，依版本的不同，由MSRD2x40.DLL（Jet 2.x）、MSRD3x40.DLL (Jet 3.x)與MSJET40.DLL支援：

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\mydatabase.mdb;

Microsoft Excel 

Excel則是在Jet 2.x開始支援的資料儲存體，雖然可以使用SELECT，INSERT，UPDATE三種查詢，但無法使用DELETE刪除資料，而且其SQL指令的使用限制也很多。

Excel的驅動程式由MSEXCL40.DLL提供，目前可支援：

 Excel 3.0（Office 3.0）
 Excel 4.0（Office 4.0）
 Excel 5.0（Office 4.3）
 Excel 8.0（Office 97-2000）

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\MyExcel.xls;
Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
对于Excel 97以上到2003版本在连接字符串中都用Excel 8.0；对于Excel 2007或2010的在连接字符串中都用Extended Properties=Excel 12.0

Exchange 

Microsoft Jet支援Exchange 4.0資料庫，但後續版本即不再支援，目前它可存取Outlook 9.0 (Outlook 2000)的資料檔，由MSEXCH40.DLL支援。

Provider=Microsoft.JET.OLEDB.4.0;Exchange 4.0;
MAPILEVEL=Outlook Address Book\;
PROFILE=Outlook;
TABLETYPE=1;
DATABASE=c:\temp

HTML Table 

在網頁中的HTML表格可以利用Jet來存取，分為HTML import和HTML export兩個部份，分別處理HTML的SELECT（輸入）與INSERT（輸出）。

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=http://www.acme.com/tb.html;
Extended Properties="HTML Import;HDR=YES;IMEX=1";

Paradox 

Jet可以連接與存取Paradox資料庫，由MSPBDE40.DLL支援，目前可用的版本有：

 Paradox 3.x
 Paradox 4.x
 Paradox 5.x
 Paradox 7.x

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\Program Files\Microsoft Office\Office;
Extended Properties=Paradox 5.x

dBase 

dBase檔案的支援由MSXBDE40.DLL支援，目前可用的版本有：

 dBase III
 dBase IV
 dBase 5.0

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=c:\myDB;
Extended Properties=dBASE IV;

文字檔案 

文字檔案 (text file)，包括csv文件，是Jet較為特殊的資料來源類型之一，它由MSTEXT40.DLL支援，它同時也是HTML Import與HTML Export的基礎。

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=c:\txtFilesFolder\data.txt;
Extended Properties="text;HDR=Yes;FMT=Delimited(,)";

Lotus 1-2-3 

Lotus 1-2-3的試算表可由Jet存取，可支援Lotus的WJ2, WJ3, WK1, WK3與WK4等檔案格式，由MSLTUS40.DLL提供支援。

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\temp\FILE0014.WK4;
Extended Properties=Lotus WK4;
Persist Security Info=False

對於Microsoft Office 2007的支援 

由於Microsoft Office 2007對其旗下Access與Excel的主要檔案格式進行修改，並且重新命名為.accdb（Access 2007資料庫檔案）與.xlsx（Excel 2007檔案），因此不再被Microsoft Jet引擎支援，不過微軟也随着OFFICE 2007产品发布了Microsoft Office 2007 Desktop Drivers: Data Connectivity Components 新的Office相关版本（Office-specific version）的Jet数据库引擎：Office Access Connectivity Engine (ACE)，其連接字串中的資料提供者改為Microsoft.ACE.OLEDB.12.0。ACE引擎向后兼容于老版本的Jet引擎，但是对Jet 4.0的一些重要特性不再支持，包括：用户级安全（User-level security）与复制特性（replication feature）。Access 2007及其后版本使用Jet 4.0引擎来操作老版本的Access文件。 Microsoft Access 2010引入了64比特版本的ACE引擎。

Access 2007的連線字串為：

Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\myFolder\myAccess2007file.accdb;
Persist Security Info=False;

Excel 2007的連線字串為：

Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES";

对 x64 的支持能力随 Office 安装版本而定：若 Office 安装了 x86 版本，则没有 64 位 ODBC 驱动程序可用（Jet 和 Office 驱动都是 32 位）；但若安装了 x64 版本的 Office，则 32 位的 ODBC 程序只能使用 Windows 附带的 Jet 驱动程序、Office 驱动程序是 64 位。

參考資料 

資料庫
微軟開發工具