SQL Server中自动增量主键的上限
SQL Server中自动增量主键的上限是多少?SQL Server中自动增量主键的上限,sql,sql-server,auto-increment,Sql,Sql Server,Auto Increment,SQL Server中自动增量主键的上限是多少? SQL Server自动增量主键达到其上限时会发生什么情况?这取决于数据类型。如果使用bigint,则不太可能溢出。即使是一个正常的整数也会给你几十亿行。我从未溢出,因此我无法告诉您如果溢出会发生什么。数据类型说明: BIGINT Integer data from -2^63 through 2^63 - 1 INT Integer data from -2^31 through 2^31 - 1 SMALLINT In
SQL Server自动增量主键达到其上限时会发生什么情况?这取决于数据类型。如果使用bigint,则不太可能溢出。即使是一个正常的整数也会给你几十亿行。我从未溢出,因此我无法告诉您如果溢出会发生什么。数据类型说明:
BIGINT Integer data from -2^63 through 2^63 - 1
INT Integer data from -2^31 through 2^31 - 1
SMALLINT Integer data from -2^15 through 2^15 - 1
TINYINT Integer data from 0 through 255
当您达到上限时,自动增量将转到下限。Joel的回答是正确的,它是您使用的任何数据类型的上限 以下是其中两个的示例:
- 内部:2^31-1(2147483647)
- bigint:2^63-1(9223372036854775807)
可能还有其他的修复方法,但没有一个简单的灵丹妙药。我只是希望这不会发生在一张桌子上,那是一堆关系的中心,因为如果发生了,你会很痛苦。这不是一个很难解决的问题,只是一个冗长乏味的问题。我来告诉你会发生什么。。。。我的数据停止插入到那个特定的表中。数据库仍然工作,但我发现数据丢失且不一致。经过一点研究,我找到了错误表,然后手动插入。误差与上述相同 必须将列更改为BIGINT。在速度稍慢的服务器上的26GB数据库上,大约需要30分钟。在数据库的存档版本(150GB左右)上,花费了相当长的时间 幸运的是,这个表没有太多的关系,所以痛苦很小。DBCC CHECKIDENT(SomeTable,RESEED,1) 这会将表“SomeTable”上的标识重置为1
不确定这是否是最好的方法。我使用int(11)如何?有多少数据?如果自动增量溢出,会发生什么情况?如果将数据类型的标识种子设置为最小负数,则可以将可存储在列中的值总数增加一倍。