SqlServer2012主键自增长值跳跃问题

问题:SqlServer主键自增长值跳跃问题

描述:前段时间在利用sqlserver2012做项目开发时,电脑出现问题,电脑出现经常性死机,因此经常需要强制重启电脑,在电脑重启之后,数据库表中设置的主键的值会出现跳跃问题,情况如图:

 

原因:经过查找资料发现,从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的。如果数据类型是 整型(int),那么跳跃值为 1000;如果数据类型为 长整型(bigint),那么跳跃值为 10000。从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候。这个奇怪的问题只在 SQL Server 2012 及更高的版本中存在,据说这不是一个BUG,而是微软数据库的新功能,SQL Server 2012之前版本不存在此问题。

解决办法:

避免出现此情况现有两种方法解决:

1、使用不带缓存功能的序列 (Sequence)作为自增长ID

CREATE SEQUENCE Id_Sequence
    AS INT
    START WITH 1
    INCREMENT BY 1
    MINVALUE 0
    NO MAXVALUE
   NO CACHE

 

2、修改SQL Server 注册启动参数 -t272

打开SQL Server配置管理器, 选择 SQL Server 2012 实例,右键, 选择属性菜单。在弹出的窗口中找到启动参数,然后注册 -t272, 完成之后重启。

转载于:https://www.cnblogs.com/mallocxw/p/5742176.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值