将IDENTITY转换为数据类型int的算术溢出错误

时间:2016-08-01 13:41:23

标签: sql-server tsql

在运行vb代码时发生将IDENTITY转换为数据类型int的算术溢出错误。但是当我执行存储过程时,数据会正确插入。

通过应用程序,有时这也有效,有时它不会。

当我检查当前标识值和当前列值不同时。这是否存在问题。

请让我知道如何解决。

5 个答案:

答案 0 :(得分:2)

2147483647 INT的最大尺寸是IDENTITY大于此值的地方。假设BIGINT超过IDENTITY,您可以使用9223372036854775807代替您的错误。

答案 1 :(得分:0)

您使用的是哪个版本的VB?你使用的是变量类型' long'提高返回值?在VB 6和之前,int的值非常有限,而在.net中,它仍然仅限于包含大约10位数字。

我会确保您使用的是“长”字样。在VB中

答案 2 :(得分:0)

你可以用这个:

DBCC CHECKIDENT('dbo.TableName',reseed,0)

重新调整为0。

答案 3 :(得分:0)

与其他人一样,您的列大于类型的range allowed

您可以像其他人所说的那样使用DBCC CHECKIDENT('dbo.TableName',reseed,0)进行重播,但如果您尝试to reuse a value that has already been used,则可能会导致错误。

假设该列是自动增量标识列且行数低于数据类型范围,则可以重新插入所有值。

  1. 创建备用表
  2. 将所有条目插入备份表
  3. 截断原始表格
  4. 插入备份表中的所有条目
  5. 删除备份表
  6. 这取决于你的约束,可能比它的价值更难。

答案 4 :(得分:0)

请勿使用

DBCC CHECKIDENT('dbo.TableName',reseed,0)
//or 
DBCC CHECKIDENT('dbo.TableName')

像我一样解决此问题。它将导致数据库重新设置您的身份。

请使用此

DBCC CHECKIDENT('dbo.TableName',NORESEED)

它将显示您的表是否为最大int值。 int的最大值为2,147,483,647