访问前端,SQL Server后端跳过自动编号ID

时间:2009-12-21 16:26:34

标签: sql-server ms-access primary-key auto-increment

问题标题是问题的症结所在。我有一个Access 2007(2003格式)前端与SQL Server 2008 Express后端。输入表单有一个链接到另一个表的子表单。在主窗体中添加记录时,表格的PK字段(设置为自动递增)会跳过大约四个ID(我说是因为有时它是三个,有时是五个,有时是4个)。

为了说明,如果最后一个ID是1234,则新记录的ID可能是1238。

我已经完成了代码,但没有找到任何表示多次保存或删除的内容。无论是否将任何记录添加到子表单,都会显示此问题。

我意识到这可能是任何事情,但我希望有人可能会有一些见解或建议的途径进行调查。

3 个答案:

答案 0 :(得分:2)

可能是表中的某些INSERT正在事务中完成,然后事务被回滚 - 这将耗尽ID,留下空白。

答案 1 :(得分:2)

检查数据库上的Identity规范以查看Identity Increment是什么。它可能以大于1的间隔递增,但这不能解释您的奇数编号。这是一个很好的起点。

此外,您可能让人们开始记录然后将其删除,以及正在回滚的事务和增加的增量。

答案 2 :(得分:2)

启动sql profiler并观察RPC:Completed和SqlStmt:已完成的事件,以查看究竟要执行的内容。

SQL Server不会无缘无故地跳过数字。看起来它正在插入一些内容并将其向后滚动或插入行失败。