Microsoft Jet Database Engine
Microsoft Jet是微軟針對檔案型資料庫所發展的資料庫引擎(Database Engine),它的適用資料來源種類相當多,像是Microsoft Access、Microsoft Excel、dBase等等檔案型資料來源都可以利用Microsoft Jet資料庫引擎來使用SQL指令存取。
目前的Jet引擎最新版本為4.0,並且未來在x64平台上將不再支援。
Jet DLLs | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
應用程序/版本 | 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的記錄能自動存回數據庫,無需另寫修改數據庫內容的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引擎版本,它支援了下列的能力:
- 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指令的使用限制也很多[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 位。
參考資料
- ^ The Access 2002 setup program only updated system files on certain versions of Windows and to a certain level.
- ^ Access 2003 relied on the Jet engine component of the operating system for its data storage and query processing.
- ^ 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.
- ^ HOW TO:使用ADO.NET擷取與修改利用Visual Basic .NET之Excel活頁簿中的記錄. [2008-09-17]. (原始內容存檔於2015-02-15).
- ^ 5.0 5.1 ConnectionStrings.com. [2021-02-07]. (原始內容存檔於2021-01-26).