访问表破坏数据库

时间:2015-01-16 18:02:49

标签: ms-access ms-access-2007

我有一个表,“tblData_Dir_Statistics_Detail”,包含15个字段,持有约150,000条记录。我可以将记录加载到此表中,但是从该表更新其他表时遇到问题(我想使用几个不同的查询来更新几个不同的表)。表上只有一个索引,表中唯一不同寻常的是有3个文本字段,我用完了255个字符,因为有些路径\数据很长甚至超过255.我试过修剪它们到150个字符,但它对纠正我使用此表所遇到的问题没有影响 此外,我手动重新创建表,因为它的行为就像它已损坏。即使这对问题也没有影响。 我遇到的最初问题是我的代码会因“超出系统资源”而停止。 以下是我遇到的事情清单,似乎无法找出原因:

  1. 当我在更新查询中使用该表(使用任务管理器)时,我总是看到我的物理内存使用率在代码点击此查询后立即从大约35,000 K跳到85,000 K然后在一两秒内,我的资源超出了错误。
  2. 有时,但不是所有时间,当我压缩和修复时,进程删除tblData_Dir_Statistics_Detail,然后将其作为错误列在MSysCompactError表中。表中的“ErrorCode”是-1011,“ErrorDiscription”是“超出系统资源”。 enter image description here
  3. 有时,但不是所有时间,当我压缩和修复时,如果我丢失了tblData_Dir_Statistics_Detail,我将在数据库窗口中丢失它下面的下一个(也显示在SYS表中)。
  4. 有时,但不是所有时间,当我压缩和修复时,如果我丢失了tblData_Dir_Statistics_Detail,我将在数据库窗口中丢失它下面的下两个位置(也显示在SYS表中)。
  5. 我已经使用了这样的表结构和更大的表,多年来没有问题。另外,我有一个并行表“tblData_Dir_Statistics”,它具有几乎相同的结构并保持相同的数据,但是在汇总级别,并且对于该表或任何其他表没有问题。

    要点: 我怀疑是某些字符被导入到其中一个破坏整个表格的字段中。

    1. 如果这是真的,我怎么能找到腐败?
    2. 如果不是这样,还有什么呢?
    3. 非常感谢!

1 个答案:

答案 0 :(得分:1)

一些注意事项:

  • 访问文件的大小限制为2 GB。如果您的文件在任何时候大于2 GB(即使是1个字节),则整个文件都已损坏
  • Access在排序数据和/或执行查询时创建临时对象(并创建并存储这些临时对象)。根据查询的复杂程度,这些临时对象可能会推高文件大小(参见上一段)。
  • 如果您使用长度大于255个字符的文本字段,请考虑使用备注字段(这些字段无法记录,因此在使用时请小心)
  • 考虑向表中添加更多索引,以简化和加快查询速度。
  • 考虑划分数据库:将所有数据放在一个(或多个)文件中,并将其中的表(它们)链接到另一个Access文件,然后执行最后一个查询。