我们已经将MS Access作为计划任务运行多年,从大型机读取文件并打印出一堆报告。当然,它随着每次调用而增长,因此它被设置为紧凑并在退出时修复。
两周前,有人在那台机器上破坏了Windows,负责此类事情的人决定在其上放置最新的“企业标准图像”。现在,在退出时,紧凑和修复成功创建优化的db1.mdb(,db2.mdb,... db99.mdb),但无法覆盖原始。事件日志中没有任何内容,但任务调度程序被告知失败了。
网络搜索最初证实了我怀疑运行该作业的帐户无权执行此任务。但是当我们解决这个问题时,我们发现该帐户已完全控制。更多的实验表明,其他两个帐户也无法做到,但所有三个帐户都可以在另一台主机上的同一目录中执行相同的数据库。
该目录位于联网的Windows文件服务器上,所以我想知道该主机的某些内容是否告诉文件服务器“你不能相信我”。但我不知道如何检查,我对任何其他建议持开放态度。
答案 0 :(得分:0)
两条评论:
退出时自动紧凑/维修是不应在任何情况下使用的。这是危险的,不可取消。对于正确构建的应用程序,在任何情况下都是浪费时间,因为用户永远不会在Access用户界面中打开后端,而只打开前端,而不需要压缩前端。
听起来你正在附加一堆临时数据。如果要在前端存储临时数据,则会出现设计错误。将临时数据移动到单独的文件并使用链接表。然后你不必紧凑 - 你可以在附加新数据之前复制模板数据库。
答案 1 :(得分:0)
找到的唯一解决方案是调度Access宏来删除原始文件,并重命名db1.mdb以替换它。
为了避免灾难,它会在存档中覆盖前一天的版本而不是删除。
这不是“正确的”解决方案,但是当问题无法找到时,.....
答案 2 :(得分:0)
我遇到了同样的问题,继承了旧的Access数据库,这是不对的,但我们无法解决。
我遇到了相同的权限问题&之前通过将system.mdw
文件从一台PC复制到另一台PC来修复它。我有一台旧的XP电脑,可以紧凑和放大修复几个没有其他机器可以运行utils
的数据库。
不记得我做了什么,但我认为它是来自Access 97的神器,所以尝试搜索该版本& .mdw
文件以获得更好的答案。