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 CE中使用自动增量的主键错误
- 2. SQL Server数据库中的主键自动增量
- 3. mysql无限主键自动增量
- 4. SQL Server 2012主键自动增量跳过10.000
- 5. 自动增量主键
- 6. 主键自动增量
- 7. SQL Server自动增量
- 8. 自动递增的主键连接表中的SQL Server
- 9. SQL上的自动增量字段不是主键
- 10. SQL主键增量
- 11. SQL Server:主键自动增量 - 删除的行和空闲键值是什么?
- 12. SQL Server 2005:在两个主键之一上设置自动增量时出错
- 13. SQL Server中自动增量,唯一,不为空主键的最低要求
- 14. 重复键主键自动增量
- 15. 设置自动增量到主键
- 16. SQL Server自动增加没有主键的列
- 17. MS SQL Server 2012的自动递增和主/外键
- 18. 如何使用nvarchar在sql server中添加自动增量主键?
- 19. Hibernate/JPA SQLServer主键自动增量
- 20. 在SQL Server 2005中将外键设为自动增量
- 21. SQL Server的INSERT语句自动增量
- 22. SQL Server将自动增加主键添加到现有表
- 23. 如何在CL-SQL中使用自动增量主键?
- 24. 如何从SQL Server中的自定义数字自动递增主键?
- 25. 主键自动增量为-1,-2,-3
- 26. mysql主键自动增量问题
- 27. 整数主键不自动增量
- 28. 更改主键自动增量
- 29. Int自动增量主键和GUID列
- 30. 两个主键&自动增量
我使用int(11)那么怎么样?多少数据?以及如果auto_increment溢出会发生什么? – 2013-10-01 02:14:04