2008-09-26 97 views
2

我有一个损坏的数据库。如果我在MS Access中打开它,MS Access会提供修复它,并成功。如何以编程方式修复(而不仅仅是压缩)Access .mdb文件?

我该如何用代码做到这一点?在没有安装MS Access的机器上。

我知道从尝试它JRO.JetEngine.CompactDatabase不起作用。

换句话说,我想要做什么Access或JETCOMP.exe正在做什么,而不是JRO.JetEngine.CompactDatabase正在做什么。

+0

呃,你有没有试过JetComp?如果它不起作用,则无法使用任何Microsoft提供的工具修复数据库,并且您需要聘请恢复损坏的Jet MDB的人员。我推荐Peter Miller在http://pksolutions.com。 – 2008-09-28 22:06:24

回答

0

我不是MS Acccess专家,但看起来好像this utility包含您需要压缩和修复损坏的数据库文件的DLL。

+0

我查看了源代码,它正在做我在做的事情,调用JRO.CompactDatabase。 – 2008-09-26 20:59:47

1

打开一个.mdb文件的命令行开关:

/compact 

它修复压缩数据库文件。

如果在/ compact开关后面留下目标文件名,则文件将压缩为原始名称和文件夹。要压缩到不同的名称,请指定一个目标文件。

+0

对不起,我澄清了我的问题,指出未安装MS Access的计算机上。 – 2008-09-26 20:54:18

1

您是否试过DBEngine.RepairDatabase [my.mdb]? (即使参考较早的版本,这似乎也不再起作用)

但是,如果经常发生以至于需要对其进行编码,则可能有更大的问题需要先解决。

如果您愿意使用单独的实用程序,那么Jetcomp.exe实用程序(http://support.microsoft.com/kb/295334)如何?它应该“能够恢复一些数据库,Microsoft Access压缩实用程序和CompactDatabase方法不能。”在这种情况下,您只需执行外部应用程序。

例如,

Call Shell("Jetcomp.exe <arguments>") 
+0

但请参阅http://support.microsoft.com/kb/294966: PRB:RepairDatabase方法不再可用于DAO 3.6 – 2008-09-26 20:55:34

+0

但是,您是否尝试过JetComp?它与该文章中的问题无关,因为它是独立的可执行文件。 – 2008-09-28 22:08:04

2

你需要去http://support.microsoft.com和搜索工具的Jetcomp.exe,这将尝试在不打开该文件进行修复和紧凑的MDB。之所以没有上述建议,是因为他们必须打开MDB才能完成工作,而JetComp不打开文件,而是在结构上对其进行操作。

如果它不能恢复你的文件(这确实发生了),那么你将不得不去数据恢复服务。我推荐PKSolutions.com的Peter Miller。

相关问题