Ms access 删除数据库内容后,MS Access(.mdb)文件大小不会减小吗?

Ms access 删除数据库内容后,MS Access(.mdb)文件大小不会减小吗?,ms-access,Ms Access,我使用JDBC-ODBC驱动程序将数据插入MS Access数据库。空白MDB文件为2KB。填充此数据库后,大小增加到155MB。然后我删除了数据。但是我发现mdb的大小仍然是155MB。我没有发现任何错误。但这样正常吗?我希望文件大小会减小。如果它是这样设计的,它背后的想法是什么?谢谢MS Access不会释放记录使用的空间,即使记录被删除。您可以在需要时手动释放空间,也可以在每次关闭应用程序时自动释放空间 要手动执行此操作,请使用Compact and Repair实用程序: 备份您的数据库

我使用JDBC-ODBC驱动程序将数据插入MS Access数据库。空白MDB文件为2KB。填充此数据库后,大小增加到155MB。然后我删除了数据。但是我发现mdb的大小仍然是155MB。我没有发现任何错误。但这样正常吗?我希望文件大小会减小。如果它是这样设计的,它背后的想法是什么?谢谢

MS Access不会释放记录使用的空间,即使记录被删除。您可以在需要时手动释放空间,也可以在每次关闭应用程序时自动释放空间

要手动执行此操作,请使用Compact and Repair实用程序:

备份您的数据库,因为在压缩过程中,存在可能会删除您的数据库的错误

如果要压缩位于服务器或共享文件夹上的多用户共享数据库,请确保没有其他人将其打开

在“工具”菜单上,指向“数据库实用程序”,然后单击“压缩并修复数据库”

要在关闭应用程序时自动执行此操作,请执行以下操作:

打开要MS Access自动压缩的数据库

在“工具”菜单上,单击“选项”,然后选择“常规”选项卡

选中“关闭时压缩”复选框

删除数据并压缩数据库后,如果数据仍然大于100KB,请不要感到惊讶。在您第一次添加数据后,有一定量的开销是无法消除的

另外,请注意,自动编号字段值的行为与压缩过程后公布的不同:根据MS Access 2000文档,如果从具有自动编号字段的表末尾删除记录,压缩数据库会重置自动编号值。因此,您添加的下一条记录的自动编号值将比表中最后一条未删除记录的自动编号值大一


我没有发现这种情况:如果您有100条自动编号记录,并删除了最后50条,那么根据文档,下一条自动编号记录应编号为51。但根据我的经验,它的编号是101。

在压缩数据库之前,MS Access不会回收记录空间

作为定期维护的一部分,您应该对access数据库执行此操作,否则最终会遇到一些非常痛苦的问题

您可以通过MS Access UI工具->数据库实用程序-> 压缩和修复数据库可以使用以下命令提示符:

msaccess.exe "target database.accdb" /compact 

注意,/Compact开关必须位于目标数据库之后,如前所述,第一次停止时应尝试压缩/修复数据库。但是,通过创建新数据库并导入旧数据库中的所有对象,也可以节省一些大小。除此之外,将其转换为MDE应该可以让您更轻松。和往常一样,不要玩弄你的产品拷贝。此外,如果使用MDE,请首先确保已正确拆分数据库。当然,如果将来需要进行修改,请保留源MDB的副本。

您可以使用JRO从代码中压缩数据库。请参阅:

前面提到的第一步应该是尝试压缩/修复数据库。但是,您也可以通过创建新数据库并导入旧数据库中的所有对象来节省一些大小。

在压缩之前,应该备份任何MDB,而不仅仅是在Access 2007中,因为某些罕见的损坏形式可能会导致预压缩数据库中仍可访问的数据在压缩数据文件中丢失。这就是为什么关闭Access COMPACT on CLOSE(访问压缩关闭)功能应始终关闭的原因。压缩不仅可以“防止坏东西发生”,而且还可以提升好东西,前提是您明智地选择了PK!:如果表中存在主键,压缩会将表记录恢复为主键顺序。这提供了相当于未维护的聚集索引,并使MicrosoftJet数据库引擎的预读功能更加高效。压缩还会更新数据库中用作Jet优化查询的表统计信息。如果您只使用MDB来存储数据,那么将其设置为MDE不会有什么区别,因为没有可删除的人类可读的VBA代码。也就是说,在BEMDBS中,我在启动时包含了一个表单,告诉用户不要做任何更改,并包含数据库版本号。这是我保存在表中的一个值,用于在用户获得新FE时以编程方式更新表、字段、索引和关系。只需让OP知道所有可能性。谢谢。它可以与MEO一起工作—压缩数据库不需要JRO—DAO工作正常,在普通Access应用程序中不需要添加对JRO的引用或使用后期绑定进行编码。如果您正在使用Je,JRO可能会很有用
t/ACE来自外部Access,并且已经在使用ADO,但如果您在Access中,则首选DAO。在Access 2016中,转到数据库工具选项卡,然后单击左侧的压缩和修复数据库。