我开发了一个Windows应用程序,后台数据库是Access 2007。我听说Access 2007的最大限制是2GB。 现在我的问题是,有没有办法将大小增加到超过这个限制?如何为应用程序创建多个数据库以增加大小和性能?
您可以将数据分区到一个或多个额外的数据库文件中,然后从您的主应用程序数据库创建卫星表的链接。虽然这种策略可以让您在Access中使用超过2GB的数据,但并不是一个很好的选择。其中一个缺点是您无法在不同的数据库文件中强制执行参照完整性;仅此一点就足以使分区成为许多应用程序的非起始者。另一个问题是临时工作空间。当数据库引擎需要一个磁盘文件作为工作空间时,它会使用一个临时文件。而且该临时文件也被限制在最大2GB。因此,如果您有6GB的数据分布在4个每个1.5GB的数据库文件中,并且您需要做一些需要处理超过2GB数据的事情,那么您可能会收到关于磁盘空间不足的错误消息。这并不意味着磁盘已满;它意味着所需的临时工作空间大于2GB。我曾经做过那种分区,我不想再做了。要求Access管理那么多数据是不合理的;我不得不花费太多时间等待它完成我要求的几乎所有任务。将这项工作转移到更有能力的数据库系统中会更好。因此,它不仅是总存储容量的问题,而且还涉及存储数据库如何处理大型数据集。您的Access应用程序可以成为客户端-服务器数据库的客户端。我还认为您应该对您正在存储的内容进行批判性审查。例如,有些人喜欢存储图像。我不这样做。相反,我存储图像文件的路径。对于其他文件类型也是如此。也许您会发现可以不存储BLOB,您可以将数据库大小舒适地减小到2GB限制以下,并继续使用Access作为存储。
当我将外部数据导入表格时,我的数据库达到2GB时也遇到了同样的问题。我只需在设置中禁用缓存即可。转到“文件”>“选项”>“当前数据库”。在“缓存Web服务和SharePoint表”下面。勾选“使用与Microsoft Access 2010及更高版本兼容的缓存格式”。勾选“关闭时清除缓存”。勾选“永不缓存”。
我在一个数据库上遇到了同样的问题,这个数据库经过17年的输入已经接近2GB的限制,它已经被拆分了,所以无法做任何处理。最后我通过调整最大的表格发现问题出在嵌入的JPG图像上,其中数量非常庞大——例如,在Access表格中使用员工或工人的嵌入式图片非常普遍。我正在实施的解决方案进展顺利。所有图片都已经在文件中,因此可以设计一个新的表单,使用超链接将图片链接起来并加入一些代码。在后端删除嵌入的图片。我已经在数据库副本上模拟了这个过程。这将把数据库大小从1.6GB减小到不到300MB,所以在尝试SQL之前,你可以考虑这个解决方案。
数据库的最大大小为2GB,减去系统对象所需的空间,但您可以尝试一种解决方法:将数据库分割。有关更多信息,请参见以下链接: Office.com - 分割 Access 数据库 MS KB304932 - 如何手动分割 Access 数据库