SQL Server中自动增量主键的上限是多少? 当SQL Server自动增量主键达到其上限时会发生什么情况?SQL Server中自动增量主键的上限
30
A
回答
35
乔尔的回答是正确的,它是你使用的任何数据类型的上限。
下面是其中的两个例子:
- INT:2^31-1(2,147,483,647)
- BIGINT:2^63-1(9,223,372,036,854,775,807)
其实我也在我工作的工作中达到了极限。实际的错误是:
Msg 8115, Level 16, State 1, Line 1 Arithmetic overflow error converting IDENTITY to data type int. Arithmetic overflow occurred.
有几个修复,我可以想到我的头顶。数字1可能非常困难,不太可能,数字2很容易,但可能会导致代码库中的问题。
- 如果标识列对您无关紧要(它不是外键等),那么您可以重新设置数据库并重置标识列。
- 将您的标识列更改为更大的数字。例如,如果你溢出了一个int,把你的标识列更改为一个大的int。祝你好运溢出:)
有可能还有其他的修复,但没有灵丹妙药容易。我只希望这不会发生在一堆关系中心的桌子上,因为如果这样做的话,你会遇到很多痛苦。这不是一个难解决的问题,只是一个乏味而漫长的问题。
4
它取决于数据类型。如果你使用bigint,你不可能会溢出。即使是一个正常的int也会给你几十亿行。我从来没有溢出,所以我不能告诉你如果你这样做会发生什么。
0
数据类型描述:
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
当你到达上限自动递增转到下限。
2
我会告诉你发生了什么......我的数据停止插入到特定的表中。该数据库仍然有效,但我发现数据丢失和不一致。通过一些研究,我找到了错误表,然后运行了一个手动插入。错误与上述相同。不得不将该列更改为BIGINT。在一台速度较慢的服务器上的26GB数据库上,花了大约30分钟。在数据库的存档版本(150GB左右)上花了相当长的时间。
幸运的是,这张桌子没有太多的关系,所以疼痛非常轻微。
1
DBCC CHECKIDENT(SomeTable,RESEED,1)
这对表重置身份1 'SomeTable'
不知道这是要做到这一点的最好办法。
相关问题
- 1. SQL Server数据库中的主键自动增量
- 2. SQL Server 2012主键自动增量跳过10.000
- 3. SQL主键增量
- 4. SQL Server:主键自动增量 - 删除的行和空闲键值是什么?
- 5. SQL Server 2005:在两个主键之一上设置自动增量时出错
- 6. MS SQL Server 2012的自动递增和主/外键
- 7. Hibernate/JPA SQLServer主键自动增量
- 8. 在SQL Server 2005中将外键设为自动增量
- 9. SQL Server的INSERT语句自动增量
- 10. 如何在CL-SQL中使用自动增量主键?
- 11. SQL Server将自动增加主键添加到现有表
- 12. 如何创建自动增量主键?
- 13. JPA自动增量非主键列
- 14. 两个主键&自动增量
- 15. SQLite:双主键和自动增量
- 16. 整数主键不自动增量
- 17. 更改主键和自动增量
- 18. 带有组合主键自动增量一部分的SQL 2008复合主键
- 19. SSMS SQL Server 2008 R2自动增量
- 20. 如何自动增加SQL Server中构建的visual studio中的主键?
- 21. npoco.Insert <T>表上没有失败自动增量主键
- 22. 自动递增的SQL Server
- 23. SQL主键自动增量VS时间戳
- 24. SQL - 主键,聚簇索引,自动增量
- 25. SQL java获取值分配给自动增量主键
- 26. SQL插入多个条目非自动增量主键
- 27. Rails 3迁移:(非主键)列上的自动增量?
- 28. Sql Server CE - 暂时禁用特定列上的自动增量
- 29. 键列自动增量
- 30. 将自动增量主键插入到外键表中
我使用int(11)那么怎么样?多少数据?以及如果auto_increment溢出会发生什么? – 2013-10-01 02:14:04