当前位置:  开发笔记 > 编程语言 > 正文

删除数据库内容后,MS Access(.mdb)文件大小是否会减少?

如何解决《删除数据库内容后,MSAccess(.mdb)文件大小是否会减少?》经验,为你挑选了2个好方法。

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



1> Jon Cahill..:

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

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

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

msaccess.exe "target database.accdb" /compact 

NB/Compact开关必须位于目标数据库之后


在Access 2016中,转到"数据库工具"选项卡,然后单击左侧的"压缩和修复数据库".

2> flamingLogos..:

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

要手动执行此操作,请使用"压缩和修复"实用程序:

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

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

    在"工具"菜单上,指向"数据库实用工具",然后单击"压缩和修复数据库".

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

    打开您希望MS Access自动压缩的数据库.

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

    选中Compact On Close复选框.

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

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

没有发现这种情况:如果您有100个自动编号记录并删除最后50个,则下一个自动编号记录(根据文档)应编号为"51".但根据我的经验,它编号为"101".


压缩'不会阻止坏事发生'它也促进了好处(假设你明智地选择了你的PK!):"如果表中存在主键,压缩将表记录恢复为主键顺序.提供了相当于非维护的聚簇索引,并使Microsoft Jet数据库引擎的预读功能更加高效.压缩还会更新数据库中用作Jet优化查询的表统计信息." (http://support.microsoft.com/kb/288631)
推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有