跳至內容

Microsoft Jet Database Engine

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

Microsoft Jet是微軟針對檔案型資料庫所發展的資料庫引擎(Database Engine),它的適用資料來源種類相當多,像是Microsoft AccessMicrosoft ExceldBase等等檔案型資料來源都可以利用Microsoft Jet資料庫引擎來使用SQL指令存取。

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

Jet DLLs
Jet version Jet engine DLL file name MDB version
1.1 1.10.0001 MSAJT110.DLL 1.0 / 1.1
2.0 (comlyr) 2.00.0000 MSAJT200.DLL 1.0 / 1.1 / 2.0
2.5(accsvc) 2.50.1606 MSAJT200.DLL 1.0 / 1.1 / 2.0 / 3.0
2.5(VB4 16) 2.50.1606 MSAJT200.DLL 1.0 / 1.1 / 2.0 / 3.0
3.0 3.0.0.2118 MSJT3032.DLL 1.0 / 1.1 / 2.0 / 3.0
3.5 MSJET35.DLL 1.0 / 1.1 / 2.0 / 3.0
4.0 (SP8) 4.0.8015.0 MSOLEDBJET40.DLL 1.0 / 1.1 / 2.0 / 3.0 / 4.0
ACE 12 12.0.xxxx.xxxx ACECORE.DLL 1.0 / 1.1 / 2.0 / 3.X / 4.0 / ACE
ACE 14 14.0.xxxx.xxxx ACECORE.DLL 3.X / 4.0 / ACE
ACE 15 15.0.xxxx.xxxx ACECORE.DLL 4.0 / ACE
ACE 16 16.0.xxxx.xxxx ACEOLEDB.DLL 4.0 / ACE
應用程序/版本 Jet version
Microsoft Access 1.0 1.0
Microsoft Access 1.1 1.1
Microsoft Access 2.0 2.0
Microsoft Access 2.0 Service Pack 2.5
Microsoft Access 95 / Excel 95 3.0
Microsoft Access 97 / Excel 97 / PowerPoint 97 / Word 97 3.5
Microsoft Access 2000 4.0 SP1
Microsoft Access 2002 [1]
Microsoft Access 2003 [2]
Microsoft Access 2007 ACE 12
Microsoft Access 2010 ACE 14
Microsoft Access 2013 ACE 15
Microsoft Access 2016 ACE 16
Visual Basic 3.0 1.1
Visual Basic Compatibility Layer 2.0
Visual Basic 4.0 16-bit 2.5
Visual Basic 4.0 32-bit 3.0
Visual Basic 5.0 3.5
Visual C++ 4.X 3.0
Visual C++ 5.0 3.5
Microsoft Project 4.1 / Project 95 3.0
Internet Information Server 3.0 3.5
SQL Server 7.0 4.0
Redistributable installers
Jet 3.51 web download 3.5+
MDAC 2.1 4.0 SP1
MDAC 2.5 4.0 SP3 to SP6+
Jet 4.0 4.0 SP3 to SP8
2007 Office System Driver頁面存檔備份,存於網際網路檔案館 ACE 12
Microsoft Access Database Engine 2010頁面存檔備份,存於網際網路檔案館 ACE 14
Microsoft Access Database Engine 2016頁面存檔備份,存於網際網路檔案館 ACE 16
操作系統
Windows Me 4.0 SP3
Windows 2000 4.0 SP3
Windows XP 4.0 SP5+
Windows Server 2003 4.0 SP6+
Windows Vista 4.0 SP8+
Windows Server 2008 4.0 SP8+
Windows 7 4.0 SP8+
Sources:

版本歷程

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)[3]。使用Dynaset英語Dynaset保存查詢結果,它自動鏈接到數據庫,因此用戶可以查看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的功能[3]

Jet 3.x

Jet 3.0在1995年第三季發表,Jet 3.5則是在1996年第三季發表,與Jet 2.x不同的是,它只有32位元的版本,提供給Windows 95以及Windows NT等作業系統使用,其主要新功能為支援資料庫複製(Replication),多執行緒支援以及動態緩衝區 (dynamic buffer)的能力,並使用全新的索引機制,可加快資料庫的速度,並且擴充DAO的物件模型[3]。採用了Microsoft Rushmore查詢優化技術。Jet 3.0引入了隱式事務(Implicit transactions),即在上一條事務提交給數據庫後,自動開始了下一條事務。但隨後在Windows95平台上發現這對性能有負面影響,Jet 3.5又刪除了這一特性。

Jet 4.0

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

  1. Unicode字元儲存支援,使用與Windows NT相同,並且也在Windows 95上版本實作的排序方法。
  2. 變更資料型別,讓它更貼近SQL Server,並支援新的decimal資料型別。
  3. Memo欄位可以設定索引。
  4. 可壓縮資料型別。
  5. 強化SQL讓Jet更符合ANSI SQL-92規範。
  6. 更好的安全性,檢視表支援,程序支援。支持SQL命令: CREATE, ADD, ALTER, DROP USER, DROP GROUP, GRANT/REVOKE.
  7. 事務的提交與回滾。
  8. 強化的表格建立與修改。
  9. 支持引用完整性
  10. 連線控制。
  11. 使用者清單,允許管理員能決定誰可連到資料庫。
  12. 記錄層級鎖(record locking model );此前版本只支援頁鎖,當時數據頁為2KB。都支持「悲觀鎖」(pessimistic locking)與樂觀鎖(optimistic locking),前者在請求鎖定時可立刻獲得鎖,後者在被編輯的記錄保存時才獲得鎖.
  13. 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指令的使用限制也很多[4]

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的連線字串為[5]

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

Excel 2007的連線字串為[5]

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 位。

參考資料

  1. ^ The Access 2002 setup program only updated system files on certain versions of Windows and to a certain level.
  2. ^ Access 2003 relied on the Jet engine component of the operating system for its data storage and query processing.
  3. ^ 3.0 3.1 3.2 Dan Haught, Jim Ferguson. Microsoft Jet Database Engine Programmer's Guide 2/e. Microsoft Professional Editions. Microsoft Press. 1997. ISBN 1572313420. 
  4. ^ HOW TO:使用ADO.NET擷取與修改利用Visual Basic .NET之Excel活頁簿中的記錄. [2008-09-17]. (原始內容存檔於2015-02-15). 
  5. ^ 5.0 5.1 ConnectionStrings.com. [2021-02-07]. (原始內容存檔於2021-01-26).