重置自动编号种子

时间:2010-02-18 18:01:35

标签: sql ms-access vb6 jet

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

假设有一个带有自动编号字段ID的表MYTABLE(也是主键)。让我们说目前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在应用程序内执行压缩/修复,但它不能解决种子问题,还需要一些额外的技巧。

我希望有人有解决方案的想法,我真的很接近绝望

全部谢谢

3 个答案:

答案 0 :(得分:4)

请参考以下文章,它包含您可以添加到访问项目以执行以重置种子的方法。过去,它曾多次成为我的救星:

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

除此之外,它还解释并深入了解此类问题的原因和可能的解决方案。

答案 1 :(得分:0)

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

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

答案 2 :(得分: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.