0

我有一个 SSIS dtsx 包,用于使用基于 DSN 的连接从远程 MAS db 服务器加载数据。我们将许多表中的数据加载到 SQL-Server 中的副本表中。一切正常,直到我们对 MAS 中的表进行了一些更改。dtsx 失败并出现以下错误:

错误:数据流任务、导入数据、DataReader 源 [28866] 处的 0xC02090F8:值太大,无法放入输出列 “UDF_TREAD_DEPTH”(29160)。

实际上,我相信它可能与一个十进制字段“UDF_TREAD_DEPTH”有关。该字段在 DataReader 源中显示为"numeric [DT_NUMERIC]" with Length:0, Precision:4 & Scale:2. 过去我们有 xx.xx 格式的简单数据。现在我看到问题后我们有 xx.xx、xxx、.. 之类的数据。但是,在我刷新 Data Reader 源后,数据类型仍然没有改变。

我相信我们基于此描述的数据的“精度应更新为 5” 。

我无法更改附加屏幕(数据源输出 column.png)中可见的数据类型。当我调试这个 dtsx 包时,它在加载数据读取器源时出错。如果我把它钉在了正确的位置 - 我该如何解决它。如果还有其他可能性,请告诉我。

在此处输入图像描述

4

2 回答 2

1

您是否尝试过使用高级编辑器编辑源代码?(右键单击并选择“显示高级编辑器...”)您可以导航到输入和输出参数部分(通常是最后一个选项卡),进入输出列部分(对于 OLE DB,单击 OLE DB 源旁边的 +输出,然后是输出列旁边的加号,然后突出显示要更改的列名称)并更改相关列的属性(查找数据类型属性并根据需要更改精度和比例。)。如果您不能这样做,您可以尝试删除源并将其替换为相同数据的新源(即,此对象的重新创建将重新查询列属性的连接)。

于 2012-07-10T20:01:22.900 回答
0

我得到要使用 xxx.xx 掩码更新的数据,因此 100 变为 100.00。这有助于 SSIS 中的 DataReader 正确推断类型。

除此之外,我还发现了另一种简单的方法,它不需要支持任何强制转换/转换功能 -

UDF_TREAD_DEPTH * 1.00 as UDF_TREAD_DEPTH

这也允许 DataReader 正确推断类型(即精度和比例)。

于 2012-08-30T13:02:01.943 回答