当前位置: 首页 > 面试题库 >

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

潘胤
2023-03-14
问题内容

我正在设计SQL Server 2008 R2 SP2
Express数据库中的表。我创建的表具有nvarchar用于数据的tinyint列和用于自动递增标识的列,并假设行数不多(这就是为什么我选择0-255
tinyint)。当我添加超过255行时,即使删除该表中的所有行并尝试添加一个新行,该错误仍然会永久发生。我正在使用SQL Server
Management Studio Express进行此操作。

  1. 如何强制数据库引擎检查哪些索引是空闲的?
  2. 如果我改变会出现这种情况太tinyintint的和达到极限int是多少?

问题答案:

一旦添加了255行,就想从表中删除所有行,但是即使删除所有行之后,增量列的计数器也已设置为255。

为了解决这个问题,您需要在删除所有行之后重置增量列的计数器。删除所有行时,请使用下面的查询,以便计数器将重置为重置为0。执行此查询后,您可以在表中添加行,且增量列值为1或在表设计时设置的值。

DELETE FROM [TestTable]

DBCC CHECKIDENT ('[TestTable]', RESEED, 0)
GO

如果要删除表中的所有行,也可以使用truncate table命令。Truncate Command还将增量列重置为初始值。

Truncate Table [TestTable]


 类似资料:
  • 问题内容: 此选择语句为我提供了算术错误消息: 尽管这一方法有效: 数据可能出问题了(我已经检查了空值,但没有一个)? 问题答案: 发现问题出在日期设置为9999-12-31时,可能要处理大数以十进制表示。从十进制更改为浮点,并且所有事物都像魅力一样起作用。

  • 问题内容: 以下是我正在使用的表结构和数据类型的子集。 我想编写一个查询,让我知道“ Val”列是否小于等于9.00(必须为数字数据类型)。我通过执行以下操作来做到这一点: 这给了我一个算术溢出错误。但是,如果我排除值“ 10”的数据行: 它的工作没有任何问题。 我的问题不是如何解决此问题,因为我知道我可以简单地将数据转换为所需的格式。 我的问题是,为什么“ Val”列中的“ 10”值返回错误。当

  • 问题内容: 我有以下查询: 无论我注释掉什么条件或聚合,总是会出现以下错误:。 我可以从这里去哪里?如何进一步调试? 编辑:样本数据 问题答案: 您是否尝试过将jaguarstartup时间强制转换为avg聚合中的bigint,如下所示… AVG(CAST(mc.JaguarStartupTime AS BIGINT)) 这应该解决算术溢出。 要计算平均平均值,服务器需要首先能够对所有int求和,

  • 问题内容: 我正在尝试使用存储过程基于varchar类型的“名称”列的输入值来返回“项目”表的“ ItemId”列值,但是每当我将任何值传递给存储过程时,它都会向我返回错误: 将数据类型varchar转换为int时出错。 这就是我所说的: 问题答案: 您必须匹配参数:RETURN不会填充OUTPUT参数:您对@itemid的赋值可以做到这一点。 另外,您存储的过程太复杂了。对于从存储的proc返回

  • 问题内容: 在SO上进行了搜索和搜索,无法弄清楚 尝试将每个字段作为FLOAT进行铸造都无济于事,转换没有给我任何进一步的帮助。 如何获取以下case子句以返回THEN部分中所述的值? 错误:消息8114,级别16,状态5,行1将数据类型varchar转换为float时出错。 我的SQL查询的错误部分: average_days_pay = float terms_code = char 问题答案

  • 问题内容: 我已经搜索了这个很棒的论坛并在Google周围搜索,但无法解决。 我们有两个表(相信我,我与这些表无关)。这两个表都有一个名为的列。 然而,在一个表中,数据类型就是和在另一个表中,这是。 我们从选择这里被定义为和保存该ID写入其中被定义为。 作为数据类型descrepancy的结果,我们得到错误转换数据类型来。 在不弄乱数据库的情况下,我想强制使用摆脱该错误。 有什么想法我在下面的代码