2009-12-21 84 views
0

问题标题是问题的关键。我有一个SQL Server 2008 Express后端的Access 2007(2003格式)前端。输入表单具有链接到另一个表的子表单。当在主窗体中添加记录时,表格的PK字段(设置为自动增量)会跳过大约四个ID(我之所以说是因为有时候是三个,有时是五个,有时是四个)。访问前端,SQL Server后端跳过自动编号ID

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

我已经通过代码加强,但没有发现任何会指示多个保存或删除。无论是否将任何记录添加到子窗体,都会出现此问题。

我意识到这可能是任何事情,但我希望有人可能有一些洞察力或建议的渠道进行调查。

回答

2

这可能是表中的一些INSERT正在一个事务中完成,然后事务回滚 - 这会使用ID,留下空白。

+0

由于某种原因,SQL Server插入失败通常会使标识增加得更高,即使没有插入表中。 – Dave 2009-12-21 16:32:19

2

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

此外,您可能会让人们开始记录,然后删除它,以便回滚事务并增加增量。

2

启动sql分析器和观察者RPC:Completed和SqlStmt:完成的事件,看看究竟是什么得到执行。

SQL Server不会无缘无故跳过数字。它看起来像插入某些东西并将其回滚或插入行失败。