如何以编程方式修复(而不仅仅是压缩)Access .mdb文件?

时间:2020-03-06 14:48:26  来源:igfitidea点击:

我有一个损坏的数据库。如果我在MS Access中打开它,则MS Access会提供修复服务,并且成功。

我该如何用代码做到这一点?在未安装MS Access的计算机上。

通过尝试,我知道JRO.JetEngine.CompactDatabase无法正常工作。

换句话说,我想执行Access或者JETCOMP.exe的操作,而不是JRO.JetEngine.CompactDatabase的操作。

解决方案

我不是MS Acccess专家,但似乎该实用程序包含我们需要压缩和修复损坏的数据库文件的DLL。

用于打开.mdb文件的命令行开关:

/compact

它修复并压缩数据库文件。

如果在/ compact开关后没有指定目标文件名,则该文件将压缩为原始名称和文件夹。要压缩为其他名称,请指定目标文件。

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

但是,如果这种情况经常发生,我们需要对其进行编码,则可能有更大的问题需要首先解决。

如果我们愿意使用单独的实用程序,则使用Jetcomp.exe实用程序(http://support.microsoft.com/kb/295334)。它应该"能够恢复Microsoft Access Compact实用程序和CompactDatabase方法无法恢复的某些数据库"。在这种情况下,我们所需要做的就是执行外部应用程序。

例如。,

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

我们需要转到http://support.microsoft.com并搜索JetComp.exe实用程序,该实用程序将尝试在不打开文件的情况下修复并压缩MDB。上面的建议均不起作用的原因是,他们必须打开MDB才能进行工作,而JetComp不会打开文件,而是对其进行结构化操作。

如果它无法恢复文件(确实发生了),那么我们将不得不使用数据恢复服务。我推荐PKSolutions.com的Peter Miller。