【问题标题】:Where to find a log of identity specification skipping rows在哪里可以找到跳过行的身份规范日志
【发布时间】:2011-03-30 08:41:48
【问题描述】:

我有一个 Microsoft SQl server 2005 数据库,其中有一个表,其主键的标识规范设置为 yes 以自动递增。

最近主键跳过了两个数字(我理解这是正常的,因为它们不一定是连续的)。

但是,如果可能的话,我想找出它们跳过的原因和时间,即是否发生了存储过程回滚并且主键序列没有回滚或者它们以某种方式被删除。

我的问题是,Microsoft SQL Server Management Studio 是否有一个指定区域来存储诸如此类的记录,即事务日志等,让我查看并尝试确定为什么会发生这种跳过.

【问题讨论】:

    标签: sql-server database sql-server-2005


    【解决方案1】:

    假设您的 IDENTITY 每次递增 1,那么如果 ROLLBACK 发生,您将在 ids 中看到 haps - 如果发生回滚,IDENTITY 值将不会恢复因此它为该操作分配的 ID 值基本上会丢失。这是完全正常的行为。

    假设您有大量的 INSERT,如果一个插入失败/回滚,那么回滚 IDENTITY 值增量将是一场噩梦,因为同时可能有大量的 INSERT。

    【讨论】:

    • 嗨,是的,在这种情况下它会增加 1。它的插入量非常低,是否有任何地方可以找到它发生原因的记录或日志?谢谢
    【解决方案2】:

    除非您的代码记录它,否则没有记录。所以不:SQL Server 不会注意到这一点。

    事务回滚或 INSERT 错误(这是单个语句回滚)将在数字序列中产生间隙。 SQL Server 没有注意到这一点。

    【讨论】:

      猜你喜欢
      • 2018-08-18
      • 2014-12-07
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2019-11-11
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多