3 回答
TA贡献1796条经验 获得超4个赞
您将需要发布源表和目标表的表定义,以便我们找出问题所在,但最重要的是,源表中的一列大于目标列。可能是以您不知道的方式更改格式。您正在使用的数据库模型对于弄清这一点也很重要。
TA贡献2016条经验 获得超9个赞
正如其他人已经说过的那样,源表中的列数据类型之一比目标列大。
一个简单的解决方案是简单地关闭警告并允许截断发生。因此,如果您收到此错误,但是您确定将旧数据库/表中的数据截断(按比例缩放)是可以接受的,则只需执行以下操作即可;
SET ANSI_WARNINGS OFF;
-- Your insert TSQL here.
SET ANSI_WARNINGS ON;
如上所述,请始终记住随后再次打开警告。我希望这有帮助。
TA贡献1877条经验 获得超6个赞
问题很简单:源查询中的一个或多个列包含的数据超出了其目标列的长度。一个简单的解决方案是采用源查询并Max(Len( source col ))在每一列上执行。即
Select Max(Len(TextCol1))
, Max(Len(TextCol2))
, Max(Len(TextCol3))
, ...
From ...
然后将这些长度与目标表中的数据类型长度进行比较。至少超过其目标列的长度。
如果您绝对肯定不会出现这种情况,并且不介意不是这种情况,那么另一种解决方案是将源查询列强制转换为它们的目标长度(这将截断任何过长的数据):
Select Cast(TextCol1 As varchar(...))
, Cast(TextCol2 As varchar(...))
, Cast(TextCol3 As varchar(...))
, ...
From ...
- 3 回答
- 0 关注
- 3213 浏览
添加回答
举报