经过大约一周的头痛,我刚刚解决了一个问题:我有一个 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
我找到了我所寻找的东西 - /compact
msaccess.exe 的标志正是这样做的。
msaccess.exe /compact "c:\path\to\my\database.mdb"