小编Alo*_*ahi的帖子

重新启动 SQL Server 时标识值跳转

我们刚刚从 SQL Server 2008 R2 切换到 SQL Server 2012。我遇到了标识列的问题:

每当我重新启动 SQL Server 时,每个标识列的种子值都会增加 1000(对于int标识列是 1000,对于bigint它是 10,000)。例如,如果表的下一个int标识值是 3,那么在重新启动 SQL Server 后它将是 1003。如果我再次重新启动 SQL Server,它将是 2003,以此类推。

在谷歌搜索后,我发现它是 SQL Server 2012 中的一个新功能(不知道它的用途),如果您想要旧的身份行为,只有两种解决方案:

  1. 使用序列对象

    这对我来说是不可能的,因为:

    a) 我在 SQL Server 2008 和 2012 中使用相同的数据库。我不能在 2008 中使用序列。

    b) 如果我使用序列,那么我需要更改每个表的保存过程,这对我们来说将是一项繁重的任务。

  2. 使用跟踪标志 272 (-T272)

    我可以使用此解决方案,因为无需对我的应用程序进行任何更改。有人建议添加-T272作为启动参数,之后此 SQL Server 标识将像在以前的版本中一样工作。我做了同样的事情,但它不起作用。

我不想对我的数据库结构进行任何更改。请提出解决方案或解释为什么-T272不起作用。

sql-server identity sql-server-2012

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

identity ×1

sql-server ×1

sql-server-2012 ×1