有没有办法清空访问数据库并完全删除其上的所有数据,就好像数据库从未使用过一样?
Posted
技术标签:
【中文标题】有没有办法清空访问数据库并完全删除其上的所有数据,就好像数据库从未使用过一样?【英文标题】:Is there a way to empty access database and erase all data on it completely as if the database never used before? 【发布时间】:2011-06-07 16:42:30 【问题描述】:我的 Microsoft Access 数据库 (.mdb) 包含太多数据。当我通过代码或删除记录删除其中的数据时,数据将被完全删除。但是,数据库大小保持不变(即没有减少),并且自动编号字段从删除记录之前保存的最后一个数字开始。我问是否有像(mysql 中的空数据库)这样的方法,通过它我可以拥有数据库方案,就好像它是新创建的并且以前从未包含数据一样。谢谢
【问题讨论】:
fiverr.com/cristiscutaru/… 【参考方案1】:您想要压缩和修复数据库。
它会因您使用的 MS-Access 版本而异,但在 2010 年,您可以在数据库工具功能区上找到它。
基本上,当您从 MS-Access 中删除记录(很像硬盘上的文件)时,它并不会立即真正删除它。它只是将记录标记为已删除。当数据库需要写入新记录时,它很可能(如果空间大小正确)尝试在这些区域之一之上进行写入,而不是增加数据库的大小。
压缩和修复数据库,除其他外,会从数据库中删除所有这些已删除的记录。
这导致了这个问题。你应该定期做吗?就像对硬盘进行碎片整理一样,不一定。有时会删除数据库中的所有空格并降低性能(因为有时您的记录会定期更改大小,而我不再适合分配给它们的空间)。此外,紧凑和修复并非没有风险(我已经让它运行正常的数据库并损坏它无法修复) - 所以首先进行备份是一个非常好的主意。
【讨论】:
压缩还有其他好处,主要是它以 PK 顺序(集群)重写表,这意味着在 PK 上的搜索会更快。它连续重写所有表和索引,主要是提高性能。记录变大的问题并不重要,因为它们永远不会大于单个数据页,如果需要更多数据页,它们只是动态分配。【参考方案2】:@CodeSlave 的回答涵盖了您问题的数据库大小部分。
您还询问了 AutoNumber 字段,如何让它回到 1。Allen Browne 展示了如何遍历每个表并在此处重置 AutoNumber 字段:
http://allenbrowne.com/ser-40.html
【讨论】:
但是如果表格是空的,那就没有必要了。以上是关于有没有办法清空访问数据库并完全删除其上的所有数据,就好像数据库从未使用过一样?的主要内容,如果未能解决你的问题,请参考以下文章