我开发了一个Windows应用程序,后端数据库是Access 2007.我听说Access 2007的最大限制是2GB。
现在我的问题是,有没有办法增加超出该限制的大小?如何为应用程序创建多个数据库以增加大小和性能?
答案 0 :(得分:7)
您可以将数据划分为一个或多个其他数据库文件,然后从主应用程序数据库创建指向卫星表的链接。
虽然该策略可以允许您使用存储在Access中的2 GB以上的数据,但它并不是一个很好的选择。一个缺陷是您无法在不同db文件中的表之间强制执行参照完整性;仅这一事实就可以使许多应用程序的分区成为非首发。
另一个问题是临时工作空间。当db引擎需要磁盘文件作为工作空间时,它使用临时文件。并且该临时文件也限制为最大2 GB。因此,如果您在4 GB的每个1.5 GB的文件之间传播6 GB的数据,并且您需要执行需要处理超过2 GB的数据的操作,则可能会收到错误消息,抱怨磁盘空间不足。这并不意味着磁盘已满;这意味着所需的临时工作空间大于2 GB。
过去曾经实际进行过一次分区,我不想再这样做了。要求Access管理那么多数据是不合理的;我不得不花太多时间等待它做几乎我要求的任何事情。将这项工作卸载到功能更强大的数据库系统要好得多。因此,这不仅是总存储容量的问题,而且还是存储数据库处理大型数据集的能力。您的Access应用程序可以成为客户端 - 服务器数据库的客户端。
我还认为你应该批判性地检查你所存储的内容。例如,有些人喜欢存储图像。我不。相反,我将路径存储到图像文件。其他文件类型也是如此。也许您可能会发现无需存储BLOB即可存活,您可以将数据库大小轻松减少到2 GB以下,并继续使用Access作为存储。
答案 1 :(得分:1)
最大数据库大小为2GB减去系统对象所需的空间,但您可以尝试一种解决方法:通过拆分数据库。有关更多信息,请参阅:
答案 2 :(得分:1)
当我的数据库在表格中导入外部数据达到2GB时,我遇到了同样的问题。我只是在设置上禁用缓存
转到文件>选项>当前数据库
在缓存Web服务和共享点表
下选中“使用与Microsoft Access 2010及更高版本兼容的缓存格式”
选中“关闭时清除缓存”
选中“从不缓存”
答案 3 :(得分:1)
我在一个拥有大量输入超过17年的数据库上遇到了同样的问题,并且正在接近2GB限制。它已经分裂,所以没有什么可以在那里完成。最后,我通过摆弄最大的表来发现问题是嵌入了JPG图像,其中有一个非常大的数字 - 例如,在访问表中使用员工或工作人员的嵌入图像很受欢迎。我现在正在实施的解决方案进展顺利。所有图片都在文件中,所以设计一个新的表单,使用超链接链接到图片与一些代码。删除后端中的嵌入图像。我已经在数据库副本上模拟了它。它将大小从1.6 GB减小到小于300 MB-因此,如果要使用SQL,您可以将其视为解决方案