我使用JDBC-ODBC驱动程序将数据插入MS Access数据库.空白的mdb文件是2KB.填充此数据库后,大小增加到155MB.然后我删除了数据.但我发现mdb的大小仍然与155MB相同.我没有得到任何错误.但这种方式是正常的吗?我希望文件大小减少.如果以这种方式设计,背后的想法是什么?谢谢
在压缩数据库之前,MS Access不会回收记录空间.
作为定期维护的一部分,您应该对访问数据库执行此操作,否则您将遇到一些非常痛苦的问题.
您可以通过MS Access UI(工具 - >数据库实用程序 - >
压缩和修复数据库)压缩数据库,您可以使用命令提示符:
msaccess.exe "target database.accdb" /compact
NB/Compact开关必须位于目标数据库之后
即使删除了记录,MS Access也不会释放记录使用的空间.您可以在需要时手动释放空间,或在每次关闭应用程序时自动释放空间.
要手动执行此操作,请使用"压缩和修复"实用程序:
备份数据库,因为Access 2007中存在可能在压缩过程中删除数据库的错误.
如果要压缩位于服务器或共享文件夹上的多用户(共享)数据库,请确保没有其他人打开它.
在"工具"菜单上,指向"数据库实用工具",然后单击"压缩和修复数据库".
要在关闭应用程序时自动执行此操作:
打开您希望MS Access自动压缩的数据库.
在"工具"菜单上,单击"选项",然后选择"常规"选项卡.
选中Compact On Close复选框.
删除数据并压缩数据库后,如果仍然大于100 KB,请不要感到惊讶.第一次添加数据后,有一定数量的开销无法删除.
此外,请注意,自动编号字段值的行为与压缩过程后公布的行为不同:根据MS Access 2000文档,如果从具有"自动编号"字段的表的末尾删除记录,则压缩数据库会重置"自动编号"值.因此,您添加的下一条记录的AutoNumber值将大于表中最后一条未删除记录的AutoNumber值.
我没有发现这种情况:如果您有100个自动编号记录并删除最后50个,则下一个自动编号记录(根据文档)应编号为"51".但根据我的经验,它编号为"101".