SQL Server 2012:意外的身份增量行為
本文解決了 SQL Server 2012 中的一個問題,即整數列的標識增量意外跳到 100 的倍數,而不是預期的 1 增量。這種不穩定的行為通常是由系統重新啟動觸發的。
根本原因:
此問題源自於 SQL Server 2012 中的效能最佳化。它利用快取來預先分配 IDENTITY 值。 預設快取大小為 1000。
後果:
伺服器重新啟動後,此快取中任何未指派的值都會被丟棄。當插入新行時,這會導致識別序列出現間隙,因為資料庫會從刷新的快取中指派新值。
解決方案與緩解策略:
雖然不能保證完全無間隙的序列,但有幾種策略可以最大限度地減少問題:
NEXT VALUE FOR
。 ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF;
以停用受影響資料庫的快取。 重要考量:
重要的是要理解,這些方法都不能完全防止身份序列中的間隙。 對於需要絕對無縫身分值的應用程序,建議使用行時間戳記或自訂金鑰產生機制等替代方法。
以上是為什麼我的 SQL Server 2012 身分增量跳躍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!