您现在的位置是:首页>数据库数据库

SQL Server 2012 自动增长列的原因及解决方法

胡小浪2018-12-11【数据库】1649人已围观

简介当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的。如果数据类型是 整型(int),那么跳跃值为 1000;如果数据类型为 长整型(bigint),那么跳跃值为 10000。

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

image.png

不要慌!这是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 依次点击 添加、应用、确定

image.png

修改完成请 重启服务.

Tags: SQL Server

扫一扫分享本页

很赞哦! (1)