Как программно восстановить (а не просто сжать) файл Access .mdb? - PullRequest
2 голосов
/ 27 сентября 2008

У меня поврежденная база данных. Если я открою его в MS Access, MS Access предложит его починить, и это удастся.

Как я могу сделать это с кодом? На машине, где MS Access не установлен.

Я знаю, попробовав это, JRO.JetEngine.CompactDatabase НЕ работает.

Другими словами, я хочу делать то, что делает Access или JETCOMP.exe, а не то, что делает JRO.JetEngine.CompactDatabase.

Ответы [ 4 ]

2 голосов
/ 28 сентября 2008

Вам нужно перейти на http://support.microsoft.com и найти утилиту JetComp.exe, которая попытается восстановить и сжать MDB, не открывая файл. Причина, по которой ни одно из предложенных выше предложений не работает, заключается в том, что им приходится открывать MDB, чтобы выполнить свою работу, тогда как JetComp не открывает файл, а работает с ним структурно.

Если он не может восстановить ваш файл (что происходит), вам придется обратиться в службу восстановления данных. Я рекомендую Питера Миллера из PKSolutions.com.

1 голос
/ 27 сентября 2008

Ключ командной строки для открытия файла .mdb:

/compact

Исправляет и сжимает файл базы данных.

Если вы не укажете имя целевого файла после ключа / compact, файл будет сжат до исходного имени и папки. Чтобы сжать с другим именем, укажите целевой файл.

1 голос
/ 27 сентября 2008

Вы пробовали DBEngine.RepairDatabase [my.mdb]? (который, кажется, больше не работает, даже если вы ссылаетесь на более раннюю версию)

Однако, если это происходит так часто, что вам нужно его кодировать, вероятно, у вас есть более серьезная проблема, которую вы должны решить в первую очередь.

Если вы хотите использовать отдельную утилиту, как насчет утилиты Jetcomp.exe (http://support.microsoft.com/kb/295334). Предполагается, что он «сможет восстанавливать некоторые базы данных, которые не может компактная утилита Microsoft Access и метод CompactDatabase». В этом случае все, что вам нужно сделать, это запустить внешнее приложение.

например,

Call Shell("Jetcomp.exe <arguments>")
0 голосов
/ 27 сентября 2008

Я не гуру MS Acccess, но похоже, что эта утилита содержит библиотеки DLL, которые вам понадобятся для сжатия и восстановления поврежденного файла базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...