【问题标题】:Access front-end, SQL Server back-end skipping autonumber IDs访问前端、SQL Server 后端跳过自动编号 ID
【发布时间】:2010-12-28 19:19:27
【问题描述】:

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

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

我已单步执行代码,但没有发现任何表明多次保存或删除的内容。无论是否将任何记录添加到子表单,都会出现此问题。

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

【问题讨论】:

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


    【解决方案1】:

    可能是表中的某些 INSERT 正在事务中完成,然后事务被回滚 - 这会用完 ID,留下间隙。

    【讨论】:

    • 由于某种原因失败的 SQL Server 插入通常会使标识增加得更高,即使没有向表中插入任何内容。
    【解决方案2】:

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

    此外,您可以让人们开始记录,然后删除它,因为事务被回滚并增加增量器。

    【讨论】:

      【解决方案3】:

      启动 sql profiler 并观察 RPC:Completed 和 SqlStmt:Completed 事件以查看正在执行的具体内容。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多