跳转到内容

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).