1

我有代码首先使用SQL Server MVC 4应用2008年SQL Server表ID技术途径,以最大长度

我的一个表被大量使用,因此,存储在其上的每一天,过了一段时间我的许多数据删除旧数据。这就是为什么,元素的ID迅速增加。

我定义它是在模型IDint类型。我担心表格会在一段时间后填满。

我该怎么办,如果表ID将到达最大长度是多少?我从未遇到过这种情况。

我的第二个问题是,如果我将改变int ID的类型long类型,然后进出口数据库,将在long类型影响网站(减)速度?

回答

7

如果使用INT IDENTITY从1开始,而你插入一行每秒,一年中的每一天,所有一年之久 - 那么你就需要66.5 你打2十亿限制之前.. 。

如果你害怕 - 这是什么命令,告诉你吗?

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

真的越来越接近2,147,483,647 - 或者是你还是离开的方式?

如果您应该得到“擦边球”:你可以随时更改列的数据类型为BIGINT - 如果您使用的是BIGINT IDENTITY从1开始,而你插入千行每秒,你需要一个mind-令人难以置信的2.92亿年你打922万亿极限....

+0

感谢您的提前信息。我看到“int”就足够大了。在我的项目中,我在第二行添加了1行。所以,“int”类型对我来说还是足够的......它会在我死的时候填满;) – 2013-02-25 12:37:32

1

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

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

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

+0

而且,只要你对结果满意,你可以保留旧桌子并使用新桌子玩耍。所以,这对你的数据是无害的。 – 2013-02-25 13:08:57