第7项中的SQL Server 2012列标识增量从6跳到1000+

这个问题在这里已经有了答案:

  • 身份增量在SQL Server数据库中跳跃6个答案

  • 这完全正常。 微软在SQL Server 2012中添加了sequences ,最后,我可能会添加并更改生成身份密钥的方式。 看看这里的一些解释。

    如果你想拥有旧的行为,你可以:

  • 使用跟踪标志272 - 这将导致为每个生成的标识值生成日志记录。 打开此跟踪标志可能会影响身份生成的性能。
  • 使用NO CACHE设置的序列发生器(http://msdn.microsoft.com/zh-cn/library/ff878091.aspx)

  • 我知道我的回答可能会迟到。 但我已经通过在SQL Server 2012中添加启动存储过程以另一种方式解决了问题。

    在主数据库中创建以下存储过程。

    USE [master]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    ALTER PROCEDURE [dbo].[ResetTableNameIdentityAfterRestart]
    AS
    BEGIN
    
    begin TRAN
        declare @id int = 0
        SELECT @id =  MAX(id) FROM [DatabaseName].dbo.[TableName]
        --print @id
        DBCC CHECKIDENT ('[DatabaseName].dbo.[TableName]', reseed, @id)
    Commit
    
    END
    

    然后使用以下语法将其添加到启动。

    EXEC sp_procoption 'ResetOrderIdentityAfterRestart', 'startup', 'on';
    

    如果您的桌子很少,这是个好主意。 但如果你必须为许多表格做,这种方法仍然有效,但不是一个好主意。


    遇到同样的问题,在SQL Server 2012中发现以下错误报告如果仍然相关,请参阅导致此问题的条件 - 此处也有一些解决方法(尽管未尝试)。 重置身份的故障转移或重新启动结果

    链接地址: http://www.djcxy.com/p/94433.html

    上一篇: SQL Server 2012 column identity increment jumping from 6 to 1000+ on 7th entry

    下一篇: Auto increment two fields in SQL Server 2008