从命令行修复 Access 数据库

从命令行修复 Access 数据库

经过大约一周的头痛,我刚刚解决了一个问题:我有一个 Access 97 数据库,我无法使用任何工具(Access 2007、Excel 16 导入等)打开它。它会提示“没有当前索引,操作无效”或“当前用户帐户无权转换或启用此数据库。”我使用恢复程序发现,该数据库的安全性中没有任何设置用户,这很奇怪。

我从此主题中有 2003 个帖子。我打开了 Excel 16,打开“数据”选项卡,选择“来自其他来源”,选择“来自 Microsoft Query”,选择“新数据源”,提供我选择的名称,选择 Microsoft Access 驱动程序 (*.mdb),然后点击“连接”按钮。

会打开一个对话框,您可以在其中选择 MDB 文件。它还有另一个按钮“修复”。如果我在选择有问题的数据库时点击“修复”,它就可以与任何应用程序配合使用,而不会抛出我遇到的任何错误。

我想知道的是,如果可能的话,如何从命令行使用此“修复”功能。我需要将此数据库上的操作作为批处理文件的一部分,其中包含 40 个其他没有给我任何错误的数据库。

这可能吗?

答案1

您可以尝试这些 VBA 代码行来在不同情况下修复数据库。

自动修复语法:

acCompactRepair "C:\Folder\Database.accdb", True

你也可以尝试这个:

  • 启动访问,
  • 打开数据库,
  • 设置关闭时紧凑选择“真的“,
  • 单击“退出”完成。

    如果您要修复数据库,而不是您正在使用的数据库:

Application.compactRepair sourecFile, destinationFile

如果您想修复正在使用的数据库:

Application.SetOption "Auto compact", True

編輯:

此命令可用于在命令行或通过批处理文件压缩 Aceess 数据库。

C:\Program Files\Microsoft Office\Office\MSAccess.exe" "C:\MyDatabase.mdb" /compact "C:\Backup.mdb"

或者这也可以用作设置计划任务。

  • 控制面板然后按计划任务打开DB。

设置选项关闭时紧凑。

通过批处理文件:

@echo off
taskkill /im MSACCESS.EXE /f
  • 保存并重命名文件为 *.bat
  • 安排批处理文件运行。

笔记,我建议,在没有目标数据库的情况下不要尝试压缩。

答案2

我找到了我所寻找的东西 - /compactmsaccess.exe 的标志正是这样做的。

msaccess.exe /compact "c:\path\to\my\database.mdb"

相关内容