【问题标题】:Automatic Compact and Repair of MS Access DatabaseMS Access 数据库的自动压缩和修复
【发布时间】:2011-05-09 08:13:22
【问题描述】:

我们有一个基于 MS Access 的系统,该系统依赖于存储在联网 MS Access 数据库中的后端数据。有时,当发生随机网络问题时,这些数据库会损坏。所以我们认为我们应该添加某种流程,可以定期启动紧凑型并进行修复。

问题是这个数据库一直被多个用户使用,并且不能保证在数据库不使用时知道某个时间是否可用。所以我的问题如下。

1) 如果在前端应用程序(MS Access 或 .NET)尝试连接数据库时正在 c/r'ed 数据库,会发生什么情况?可以吗?

2) SO 推荐什么作为让前端应用程序都等到后端 MS Access 数据库准备好使用的好解决方案?前端应用程序所需的更改越少越好。

谢谢!

【问题讨论】:

    标签: .net ms-access concurrency corruption compact-database


    【解决方案1】:

    这是 Access 开发人员中比较常见的问题。

    它有两个部分:

    1. 用于备份和压缩数据库的代码,您将在服务器上安排这些代码。

    2. 您放置在前端的代码,用于在允许 #1 中的代码运行的时间自动注销所有人。

    一般来说,办公室只在当地时间上午 8 点到下午 6 点开放,因此通常可以安全地在午夜左右将所有人赶出去,这样后端就可以在凌晨 1 点进行备份和压缩,以准备您的常规文件服务器备份,例如凌晨 2 点。

    用于备份/压缩的 VBScript 相对容易编写。如果您需要这方面的帮助,请询问。

    对于前端,您需要有一个隐藏表单,该表单在应用打开时打开,上面有一个设置为在午夜启动并关闭应用的计时器。您想获得的详细程度取决于。潜在的陷阱是如果用户已经开始记录并且它处于无法保存的状态(由于某种原因未能通过验证规则)。这可能很复杂(您必须捕获错误,撤消树桩记录,然后您可以关闭),但最好设计您的应用程序,以便用户永远无法创建无法保存的记录。

    关键点是您必须计划这两端,计划和关闭在您的备份/压缩计划运行时保留的任何连接。

    【讨论】:

      【解决方案2】:

      据我了解,让它自动压缩数据库是个坏主意。如果在压缩之前出现可恢复的错误,那么之后您可能会得到一个完全不可读的数据库——需要从备份中恢复。

      1> 如果前端尝试访问正在压缩/修复的数据库,我相信前端客户端会被告知数据库不可用并被毫不客气地弹出。我相信你可以为此编写一个错误处理程序,但这需要比我提供的更多的 VBA 知识。

      2> 如果可能的话,在处理多个客户端时 - 后端的 RDBMS 总是会表现得更好,即使它是在备用 Windows 机器上的 Microsoft SQL Server Express。当“坏事”发生(网络断开、客户端锁定等)时,数据将有更好的机会不被破坏。带有事务的 RDBMS 通常是一个很好的途径。

      就这个问题的解决方案而言,恐怕我缺乏程序化的想法。对不起。

      【讨论】:

      • 在我们进行手动压缩和修复之前,我们遇到了多个数据库无法正常工作的问题。这需要我们远程访问我们客户的系统或引导他们通过它,我们不一定知道损坏的数据库是问题所在。如果它是定期自动编写的,它可能会消除重复错误的一个来源。
      • 可以通过VBScript进行压缩和修复。我想,向您的客户展示如何安全地使用这样的脚本并不难。
      【解决方案3】:

      Garry Robinson 关于访问安全的书处理了这个问题。非常值得一读。在 Garry 的网站 (vb123.com) 上,他出售了一个工具箱,其中包含许多管理和安全工具,其中包括一个向每个连接的工作站发出警告,然后在 x 秒后关闭前端的工具。

      这本书是:

      Real World Microsoft Access Database Protection and Security

      如果您在公司环境中使用 Access,则必须拥有并阅读它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-30
        • 1970-01-01
        • 1970-01-01
        • 2010-10-21
        相关资源
        最近更新 更多