0

我在数据类型为十进制 (10,2) 的源表中有一个字段。源字段在一个 SSIS 包中的简单数据泵中使用,以将数据插入到另一个表中到具有精确数据类型的字段中。最近,源表和目标表的精度都更改为 18,数据类型为 Decimal(18, 2)。

软件包开始在服务器上失败,并出现以下错误:

说明:输出“OLE DB 源输出”(11) 上的输出列“RunningTotal”(20) 存在错误。返回的列状态为:“转换失败,因为数据值溢出了指定类型。”

当我进入 DataPump 中 OLE DB 源的高级编辑器时,我发现输出列仍然显示旧的精度 10。

这是否意味着,每当发生此类更改(例如更改精度而不是整个数据类型)时,都需要手动更新包并将其推送到服务器?或者有没有办法让包自动识别这些类型的变化?

非常感谢大家的帮助。

4

1 回答 1

3

是的,每次元数据在源中发生更改时,您都需要手动更新元数据。避免手动刷新的唯一方法是明确定义要使用的元数据,这convert在您的查询中意味着很多。

例如,更改:

select id
  from mytable

进入 :

select convert(int, id) as id
  from mytable

因此,当数据类型从 int 更改为 bigint 时,您不需要更新元数据。请注意,它可能会开始失败,因为 bigint 值大于 SSIS 中的 int 大小!

于 2013-02-26T21:20:18.800 回答