我有一个Access数据库表,大约有400万行。我想这样做是为了添加一列(字段)与使用MS访问设计视图的自动编号的类型。但是当我尝试这样做时,访问给出了一个错误,并说:"查询无法完成。查询的大小大于允许的最大大小(2 GB),或者没有足够的临时空间来执行此操作。"
我有的是:
Column1 Column2 . . .
------- -------
我想要的是:
Number Column1 Column2 . . .
------ ------- -------
我试过了:
- 从注册表中更改maxLocks值。
- 数据库的压缩与修复。
有办法解决这个问题吗?还是有其他方法可以做我想做的事?
每个OP请求:
它告诉你,你正在达到Access的最大功能。检查将数据库移到其他地方,可能是SQLServer或mySQL
尝试创建一个新表,然后将旧表中的所有内容推入新表。最后,您可以删除旧的并重新命名新的。如果你有亲戚,你也需要处理好他们。由于自动编号是一个新列,我猜它还没有涉及到任何一个....
和@jonathan的评论是对的…移动到SQL Express或SQL server (MS world)或mySQL,如果你有从你的应用程序提供它。
良好的数据管理是任何数据库的关键,但更重要的是访问,因为它确实有大小/性能限制与专用数据库服务器。
如果不能将大型数据集移动到专用服务器,你应该考虑某种形式的归档,例如移动超过6个月的数据(时间尺度取决于你添加的数据量)
另外,查看请求,似乎您可能想要添加自动编号字段来唯一地标识您的记录,如果是这种情况,那么确保在第一次创建表时设置您的唯一标识符(主键)是良好的实践。
撇开这些不谈,暂时你可以试试下面的方法:将数据库移动到有足够空闲空间的本地驱动器(如果还没有的话)。确保您运行在具有大量RAM和虚拟内存的机器上。执行数据库的压缩和修复,因为这可能会充分减少表的大小(这可能需要一段时间)。尝试再次添加自动编号列。