访问 - 防止数据库大小增长

时间:2015-11-12 17:27:53

标签: vba access-vba ms-access-2013 filesize

我正在使用由第三方开发的MS Access 2013轻量级应用程序。我没有做项目的编码/设计/管理,但我负责我的团队的实施。我也没有选择切换到另一个解决方案,但我确实可以访问vba代码,所以我可以进行调整以清理它们的混乱。

我的问题是:

  1. 使用我的数据设置应用程序(a-ok)。
  2. 运行内置的,相当复杂的第三方宏。
  3. 对于大多数情况来说,事情很好......但是当它运行时 更大的数据集Access文件的文件大小超过2GB 整个操作失败。
  4. 如果失败,则必须重新启动该过程。对于相同的数据集, 它每次达到大约55%完成时都会失败。
  5. 因此我无法完成我的工作。 :|
  6. 尝试解决方案:

    1. 紧凑和修复 - 完全执行时很好,但问题是它在宏运行时达到2GB并且无法中断。
    2. 拆分数据库 - 拆分确定,但不解决问题。
    3. 在循环期间尝试在宏内部触发紧凑并进行修复 - 失败,因为Access无法锁定数据库。
    4. 理想的解决方案:

      1. 在宏运行时防止文件增长/膨胀的方法。无论是通过流程的划分还是通过我目前都不知道的其他魔法。
      2. 不需要对底层代码进行大量重新配置的解决方案。我可以处理效率低下的问题 - 只要我可以为这个实例修复此问题(数据库中44次运行不同数据时出现1个严重错误。
      3. 任何帮助?

2 个答案:

答案 0 :(得分:0)

我建议使用compact on close来轻松解决方案

  1. 在“文件”选项卡上,单击“选项”。
  2. 在“访问选项”对话框中,单击“当前数据库”。
  3. 在“应用程序选项”下,选中“关闭时压缩”复选框。
  4. 高级解决方案

    另一种解决方案需要拆分数据库。

    分手后你还有另一种选择。

    使用带有sql server的前端(检查哪个版本适合你,我认为如果你不期望有大量的数据,那么lite(免费)版本就足够了)

    1. 拆分数据库
    2. 安装sql server(mysql或sql server express edition)
    3. 在sql server中创建所有表
    4. 将前端链接到sql server

答案 1 :(得分:0)

我认为davejal几乎把这个钉死了。

如果你有一些非常大的表,你可以把它们放到另一个Access数据库中,并建立一个链接。

https://support.office.com/en-us/article/Import-or-link-to-data-in-another-Access-database-095ab408-89c7-45b3-aac2-58036e45fcf6

2GB限制是每个数据库。

或者,免费升级到SQL Server Express,并使用Access作为该SQL Server后端的前端。

SQL-Server Backend, MS Access Frontend: Connection

这是获取SQL Server Express的链接。 https://www.microsoft.com/en-us/download/details.aspx?id=42299