The*_*ent 4 database repair ms-access-2007
我需要压缩和修复Access 2007 .accdb数据库文件.我知道JRO.JetEngine可以使用.mdb文件执行此操作,但我需要通过代码修复较新的版本2007格式.
有什么建议?
编辑:
事情就是这样:我发现我可以使用COM对象库"Microsoft Office 12 Access数据库引擎对象库"并使用DBEngine类并调用其CompactDatabse方法.但似乎没有地方可以提供数据库密码; 好像Office 12数据库引擎在任何地方都没有任何文档.我找到了旧版本的CompactDatabase方法的一些文档,但这些文档根本没有帮助我.
这真让我抓狂.
好像Office 12数据库引擎在任何地方都没有任何文档.
不完全正确.信息有限.
在MSDN上,请参阅:
Microsoft Jet复制对象(JRO)参考有一个分支,因此JRO(包含ADO classic的库之一)仍然正式支持(并且AFAIK仍可用)ACE,例如accdb格式.该CompactDatabase方法有两个参数,这两者是一个OLE DB连接字符串.因此,提供数据库密码应该与常规连接没有区别,例如Jet OLEDB:Database Password在连接字符串中使用.请记住,对于accdb格式,您需要包含Jet OLEDB:Engine Type=5在连接字符串中,例如
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\MyDB.accdb;
Jet OLEDB:Database Password=MYPASSWORD;
Jet OLEDB:Engine Type=5
Run Code Online (Sandbox Code Playgroud)
对于它的价值(事实证明并不多),ACE引擎的有限文档可以在Access 2007 for Access 2007中找到.
请记住,大多数Access数据库引擎都是在20世纪90年代开发的,当时专有格式风靡一时; 我怀疑文档是出于商业原因被压制而且知识就丢失了.因此,当前可用的文档中存在许多漏洞,而大型漏洞则存在很多漏洞.通常,找出引擎如何工作的唯一方法是通过实际使用来发现它.存在的文档包含一些令人震惊的错误:今天我已经在SO上发布了几个示例,其中可能使用但虚构的功能(LIMIT TO nn ROWS,CREATE TEMPORARY TABLE等)已在Access帮助中公布.买者自负.
我知道这是一个旧线程,但这对我有用(对于 VB.Net)。希望它可以帮助某人在路上:
? 添加对“Microsoft Office 12.0 Access 数据库引擎对象库”的引用
Dim dbe As New Microsoft.Office.Interop.Access.Dao.DBEngine
dbe.CompactDatabase("C:\folder\database.accdb", "C:\folder\database_New.accdb", , , ";pwd=<database password>")
Run Code Online (Sandbox Code Playgroud)