重置自动编号种子

问题描述 投票:7回答:3

我有一个VB6 / Access应用程序,偶尔会遇到错误的自动编号字段种子的问题。

假设有一个表MYTABLE带有一个自动编号字段ID(也是主键)。可以说,当前ID的最大值为1000。当应用程序插入新记录(未明确提供ID值)时,由于某种原因,它决定下一个自动编号字段值为950(而不是应为1001)。 )-因此发生主键冲突错误。

[我发现了一篇描述我的症状的知识库文章:http://support.microsoft.com/kb/884185。简而言之,他们建议运行查询:

ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER(1001,1)

当我尝试执行此操作时,它失败,并显示“无效的字段数据类型”

如果我在Access中打开数据库并执行压缩/修复,问题就解决了,但是我需要能够解决应用程序内部的此类问题:它已安装在世界各地成千上万的PC上,并要求人们用Access压缩/修复不是一个选项。

我使用DAO DBEngine.CompactDatabase在应用程序内部执行压缩/修复,但它不能解决种子问题,还需要一些其他技巧。

有解决方案的想法吗?

sql ms-access vb6 jet
3个回答
4
投票

请参考以下文章,它包含您可以添加到您的访问项目中以执行以重置种子的方法。过去几次都为我节省了资金:

http://allenbrowne.com/ser-40.html

此外,它还提供了对此类问题的原因和潜在解决方案的解释和见解。


0
投票

您可能还需要确保您的数据库设置为使用ANSI 92,以便将COUNTER识别为合法的数据类型。

在Access 2007中,转到访问选项,对象设计器,SQL Server兼容性语法(ANSI 92)进行设置。


0
投票

您可以通过紧凑/维修来解决问题:

In Access 2010:  Compact and Repair Database on the Database Tools ribbon.
In Access 2007:  Office Button | Manage.
In earlier versions:  Tools | Database Utilities.
© www.soinside.com 2019 - 2024. All rights reserved.