【发布时间】:2015-08-28 07:02:43
【问题描述】:
这个问题是关于MS SQL 2008 Server Standard R2 SP3
中的奇怪行为我已经阅读了很多关于 SQL Server 中的 IDENTITY 增量以及它们之间的奇怪差距的问题。但基本上人们说它与交易或重启有关。 在我的情况下(我们使用 MS SQL Server 2008 R2 Standard 64 位 SP3 的命名实例)差距简直是巨大的。 应用程序在表中插入了 130 000 条记录,并且出现“算术溢出 IDENTITY 转换为 int”错误。 我们截断表,并批量插入 70 000 条记录。在批量插入 IDENTITY 列期间,最大值高于 9 000 000!
由于不是正常加载而是批量插入 - 在此操作期间没有回滚、重新启动或任何其他问题。
所以差距不是 1000 的大小,而是几十万。
由于我不控制应用程序代码(它是从其他公司购买的商业软件),我很害怕作为此类数据库的管理员我该怎么办?我必须每 6 个月截断一次表吗?实时监控ID栏?
差距不是 1000 的大小,而是几十万。 有遇到类似问题的同学吗?
【问题讨论】:
-
您是如何创建身份列的。可以定义间隙的大小
-
为什么在往表中插入数据之前不能使用DBCC命令,那么gap就不会增加了
-
你可以把列类型改成big int,这样会改变gap,但是可以防止长时间溢出
标签: sql-server sql-server-2008 tsql sql-server-2008-r2