【问题标题】:Changing precision on the decimal field causes SSIS Package to fail更改小数字段的精度会导致 SSIS 包失败
【发布时间】:2013-02-26 20:11:35
【问题描述】:

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

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

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

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

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

非常感谢大家的帮助。

【问题讨论】:

    标签: sql-server sql-server-2008 ssis


    【解决方案1】:

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

    例如,改变:

    select id
      from mytable
    

    进入:

    select convert(int, id) as id
      from mytable
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多