1

我有 SQL Server 2008 的代码优先 MVC 4 应用程序。

我的一张表用得很多,所以每天都有很多数据存储在上面,一段时间后我删除了旧数据。这就是为什么,元素的ID迅速增加。

我将其定义IDint模型中的类型。我担心桌子会在一段时间后填满。

如果表 ID 将达到最大长度,我该怎么办?我从来没有遇到过这种情况。

我的第二个问题是,如果我将 ID 的类型从类型更改intlong导出导入数据库,这种long类型会影响(降低)站点的速度吗?

4

2 回答 2

7

如果您使用从 1 开始的值,并且您每秒、一年中的每一天、全年都INT IDENTITY插入一行- 那么您需要 66.5才能达到 20 亿的限制...

如果你害怕 - 这个命令告诉你什么?

SELECT IDENT_CURRENT('your-table-name-here')

真的接近 2,147,483,647 - 还是你还有很长的路要走?

如果您应该“太接近”:您始终可以将列的数据类型更改为BIGINT- 如果您使用从 1 开始的 a,并且您每秒BIGINT IDENTITY插入一千行,您需要一个令人难以置信的2.92 亿年才能达到922 万亿极限....

于 2013-02-25T12:19:04.290 回答
1

据我所知,目前还没有任何有效的方法来防止达到自动增加身份的限制。您可以将其设置为足够大的数据类型,以便在创建表时持续很长时间。但是,这是我能想到的一种解决方案。

创建一个具有相同数据结构的新临时表,其中已包含自动增量列并设置为主键。然后,在 Management Studio 中,将数据从旧表导入到新表中。当您被要求复制数据或编写自己的查询时,只需选择编写查询,然后从旧表中选择除 ID 之外的所有内容。这可以将身份重置为从 1 开始。之后您可以删除旧表并重命名新的临时表。虽然您必须右键单击数据库本身才能访问导入和导出命令,但您可以在选项中将源数据库和目标数据库设置为相同。

这种方法非常简单,我自己做过几次。

于 2013-02-25T13:02:18.787 回答