1. 程式人生 > >資料庫自增列增大1000的原因及解決方法

資料庫自增列增大1000的原因及解決方法

在使用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 依次點選 新增、應用、確定