如何以编程方式修复(而不仅仅是压缩)Access .mdb文件?
我有一个损坏的数据库。如果我在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。