在运行vb代码时发生将IDENTITY转换为数据类型int的算术溢出错误。但是当我执行存储过程时,数据会正确插入。
通过应用程序,有时这也有效,有时它不会。
当我检查当前标识值和当前列值不同时。这是否存在问题。
请让我知道如何解决。
答案 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,则可能会导致错误。
假设该列是自动增量标识列且行数低于数据类型范围,则可以重新插入所有值。
这取决于你的约束,可能比它的价值更难。
答案 4 :(得分:0)
请勿使用
DBCC CHECKIDENT('dbo.TableName',reseed,0)
//or
DBCC CHECKIDENT('dbo.TableName')
像我一样解决此问题。它将导致数据库重新设置您的身份。
请使用此
DBCC CHECKIDENT('dbo.TableName',NORESEED)
它将显示您的表是否为最大int值。 int的最大值为2,147,483,647
。