如何修复动态增长直到达到 2 GB 限制的 MS Access table?

How to fix MS Access table that grows dynamically until it hits the 2 GB limit?

我有一个 Access table "appears" 超过了它的 2 GB 限制,但实际上并没有那么大。事实上,整个 .mdb 文件的大小只有 4 MB。

table 显然已损坏,但在某种程度上使其难以处理。当我打开它时,它似乎在动态增长,并重复着大块的行。 table是复合主键,理论上应该不可能有重复行。

如果我在 MS Access 中打开 table 并尝试转到最后一条记录(或稍等片刻),我最终会收到一条错误消息,指出已达到 2GB 限制,并且“ #Error”出现在每个单元格中。

如果我尝试执行压缩和修复,它似乎挂起,副作用是创建了一个 2GB Database.mdb 文件。

我以前处理过损坏的 tables,但从来没有处理过动态复制自己的行的问题。任何建议如何解决这个问题?

以下是一些诊断措施和解决方案:

  1. 检查后台发生的 VBA 进程:在 OnOpen 或 OnCurrent 事件、按钮触发器、调用的表单后面 函数 =somefunction() 或宏 DoCmd.OpenMacro。这听起来像是一个循环可能 运行 跨越所有行。如果 不知道从哪里开始,找到按钮触发器,更新事件后,退出 在右下方显示状态栏消息的表单上的例程或 光标显示 hourglass/spinning 轮子。
  2. 检查迭代操作查询(Append、Update 和 Make-Table 查询,ADO/DAO 记录集更新)。
  3. Decompile/Recompile VBA 代码 并压缩并修复数据库。
  4. 创建一个新数据库并从可能的数据库中导入表 损坏的副本。