我在一个 Win32 应用程序上工作,该应用程序开发了一个非常奇怪的问题,即数据库悄悄地增长,直到最终达到 2 GB 文件大小限制。我们使用 ADO 连接到 Access 2007 数据库。该应用程序多年来一直运行良好,没有观察到这样的困难。正如您可能想象的那样,当它达到 2 GB 的限制时,数据库就会损坏。我现在有很多客户数据库被发送给我们进行维修——大小都在 2GB 左右。一旦压缩,它们就会回到 < 10 MB。
随着时间的推移,我们看到了一些数据库的增长,但从未有过这种规模的增长。
我制作了一个小型数据库“检查器”,它将所有记录中所有字段的内容相加,以了解存在多少实际数据。在最近压缩的数据库上检查了这个新工具后,我认为该工具工作正常。所有臃肿的数据库每个的数据都不超过 10 MB。
我们不会在应用启动时压缩数据库。在我看来,因为我们不删除大量数据,所以压缩数据库不是我们“应该”需要做的事情。拥有较大数据库的客户(有一些但它们在早期版本上)。
你能建议我们如何让一个小于 10 MB 的数据库增长到 2 GB 吗?
关于我们的应用程序所做的一些评论:
当 ADO 没有打开数据库时,任何重组都是使用 DAO 完成的。
我们确实在一些地方使用交易
为方便起见,某些记录便于删除和重新创建,而不是查找/编辑/删除。通常此操作涉及 5-30 条记录,每条记录约 8K。这仅在用户按下“保存”时发生。
还有其他大约 70 KB/记录的记录类型,但我们没有对它们使用删除/重新创建。
我们使用 BLOB(“OLEObject”)字段来存储二进制数据。
感谢您提供的任何见解。