【发布时间】:2020-04-27 01:11:30
【问题描述】:
SYSOBJECTS 表有一个 int 类型的标识列。但是 ID 列中的值越来越接近 int 最大值。我想当它达到最大值时将无法创建任何对象。
例如,有没有办法改变该表以将 ID 列转换为 BIGINT?或者有什么工具可以解决这个问题?
【问题讨论】:
-
我不禁觉得这是在问错误的问题......为什么这个神秘的数据库中有(或总共有)近 240 万个对象?
-
你不能改变系统表的定义,即使你可以,其余的引擎和系统对象也不知道你做了,所以根本行不通。请记住,创建的对象的限制是 2^31-1 -- 21 十亿 个对象 -- 你确定你已经接近了吗?如果您的数据库已经成功实现了这一目标,那么您应该使用全新的数据库和数据转换进行重新设计,这也将解决重置身份的问题。
-
这是一个非常古老的数据库,经过多次部署。每次部署都会删除并再次创建一些视图/过程,因此 id 会递增。
-
我们那里没有那么多对象。这都是因为没有最佳的部署过程。
-
对象 id 不是按顺序分配的,所以可能不需要恐慌它们有很大的增量(16000057)并在溢出时环绕