SQL 服务器系统 table identity crysis / SYSOBJECTS table ID is close to int max value

SQL Server system table identity crysis / SYSOBJECTS table ID is close to int max value

SYSOBJECTS table 有一个 int 类型的标识列。但是 ID 列中的值越来越接近 int 最大值。我想当它达到最大值时将无法创建任何对象。

有没有办法改变 table 以将 ID 列转换为 BIGINT 等?或者有什么工具可以解决这个问题?

这不适合(很好)评论。

来自Maximum Capacity Specifications for SQL Server

SQL Server Database | Maximum sizes/numbers | Additional Information 
Engine object       | SQL Server (64-bit)   |
--------------------|-----------------------|----------------------------------------------------
Tables per database | Limited by number of  | Database objects include objects such as tables,
                    | objects in a database | views, stored procedures, user-defined functions,
                    |                       | triggers, rules, defaults, and constraints.
                    |                       | The sum of the number of all objects in a database
                    |                       | cannot exceed 2,147,483,647. 

如果您接近 2,147,483,647 个对象,则需要修复您的设计。故事结束。

你不用担心。

对象 ID 未按顺序分配。它们之间有 16000057 的差距,并且只是在溢出时环绕(大约每创建几百个对象)所以你会在其中看到一些大数字是正常的。