数据库自增列增大1000的原因及解决方法

本文解析了SQLServer2012在重启后自增列值突然增大1000的原因,这一特性是为了解决数据同步过程中可能产生的冲突问题,并提供了详细的配置步骤来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用SQL Server 2012数据库设置自增列时,有时候自增列值突然增大1000,比如这样


不要慌!这是SQL Server 2012故意这么设计的。

原因:

来看看SQL Server 2012的英文介绍

From SQL Server 2012 version, when SQL Server instance is restarted, then table's Identity value is jumped and the actual jumped value depends on identity column data type. If it is integer (int) data type, then jump value is 1000 and if big integer (bigint), then jump value is 10000. From our application point of view, this increment is not acceptable for all the business cases specially when the value shows to the client. This is the special case/issue ships with only SQL Server 2012 and older versions have no such issue.

蹩脚的翻译

从SQL Server2012版本中,当SQL Server重新启动时,则表的IDENTITY值跳起来,实际跳下值取决于标识列的数据类型。如果它是整数(INT)数据类型,则跳值为1000,如果是大的整数(BIGINT),则跳值为10000。从我们的应用程序的角度来看,这个增量在所有的商业案例中是无法接受的,特别是当值展示给客户端时。这是特殊情况,只有SQL Server 2012有这个问题,旧版本并没有这样的问题。

通俗的讲

这是由于重启数据库服务造成的,自增列突然增大1000是给数据同步预留用的。比如两台服务器做了数据同步,其中一台服务器要重启,而在这时另一台服务器又有新的数据插入,这1000行就是预留给这些新的数据的,以避免两台服务器的数据冲突。

解决方法:

1打开 计算机管理
2左边 选择SQL Server服务
3右边 右击SQL Server(MSSQLSERVER) 选择 属性
4选择 启动参数
5在参数里输入  -t272 依次点击 添加、应用、确定






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值