我以为这是一个错误,但读完这篇文章后 http://www.codeproject.com/Tips/668042/SQL-Server-2012-Auto-Identity-Column-Value-Jump-Is ,我发现这是SQL Server 2012的新特性。
此功能会自动将新行的最后一个标识列值增加 1000(整数)(对于 bigints 为 10000)。
我仍在尝试文章中给出的解决方案,但如果这种跳转发生在客户端,我没有任何问题。因为我正在向客户端显示 ID 的哈希版本。这是他自己的要求,不是我的。
但是我想知道如果这些标识列的值超出数据类型(int 或 bigint)的范围怎么办?它如何处理列的范围和大小?
最佳答案
现有标识列将失败,并显示“服务器:消息 8115,级别 16,状态 1,第 2 行将 IDENTITY 转换为数据类型 int 时发生算术溢出错误。发生算术溢出。”请参阅http://www.sql-server-performance.com/2006/identity-integer-scope/供讨论。
没有理由怀疑 Identity Jump 会有不同的行为。我不希望它去寻找较早序列中未使用的身份。
关于sql - Microsoft SQL Server 2012 的新 Identity Jump 功能如何处理数据类型范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36814552/