首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除数据库内容后,MS Access(.mdb)文件大小不会减小吗?

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

Stack Overflow用户
提问于 2008-10-01 05:25:02
回答 5查看 45.9K关注 0票数 29

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

EN

回答 5

Stack Overflow用户

发布于 2008-10-01 05:32:10

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

这是你应该对access数据库做的事情,作为你日常维护的一部分,否则你将会遇到一些非常痛苦的问题。

您可以通过MS Access UI (工具->数据库实用程序->

压缩和修复数据库),您可以使用以下命令提示符:

代码语言:javascript
复制
msaccess.exe "target database.accdb" /compact 

注意: /Compact开关必须在目标数据库之后

票数 41
EN

Stack Overflow用户

发布于 2008-10-01 05:30:42

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

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

  1. 备份您的数据库,因为有一个bug in Access 2007可能会在压缩过程中删除您的数据库。
  2. 如果您正在压缩位于服务器或共享文件夹上的多用户(共享)数据库,请确保没有其他人将其打开。
  3. 在“工具”菜单上,指向“数据库实用工具”,然后单击“压缩和修复数据库”。

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

  1. 打开希望MS Access对其进行压缩的数据库,单击“工具”菜单,单击“选项”,然后选择“常规”选项卡。
  2. 选中“关闭时压缩”复选框。

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

另外,请注意,在压缩过程之后,AutoNumber字段值的行为与通告的不同:根据MS Access 2000文档,如果从包含AutoNumber字段的表的末尾删除记录,则压缩数据库将重置AutoNumber值。因此,您添加的下一条记录的AutoNumber值将比表中最后一条未删除记录的AutoNumber值大1。

我发现情况并非如此:如果您有100条自动编号的记录并删除了最后50条,则下一条AutoNumber记录(根据文档)应该编号为"51“。但在我的经验中,它被编号为"101“。

票数 19
EN

Stack Overflow用户

发布于 2011-05-22 19:14:08

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/156331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档