我有一个SSIS dtsx包,用于使用基于DSN的连接从远程MAS数据库服务器加载数据。我们将许多表中的数据加载到SQL-Server中的副本表中。在我们对MAS中的表进行一些更改之前,一切正常。 dtsx失败并出现以下错误:
错误:数据流任务中的0xC02090F8,导入数据,DataReader源 [28866]:该值太大而无法放入输出列 “UDF_TREAD_DEPTH”(29160)。
实际上我相信它可能与单个表字段“UDF_TREAD_DEPTH”有关,它是一个十进制字段。此字段在DataReader源中显示为"numeric [DT_NUMERIC]" with Length:0, Precision:4 & Scale:2.
在过去,我们有格式xx.xx的简单数据。现在我看到问题之后我们有xx.xx,xxx等数据。但是,在我刷新数据读取器源之后,数据类型仍然没有改变。
我相信我们拥有的数据“精确度应该更新为5” 基于this description。
我无法在附加的屏幕中更改数据类型(数据源输出专栏.png )。当我调试这个dtsx包时,它在加载数据读取器源时出错。如果我正确指出 - 我该如何解决它。如果还有其他可能性,请告诉我。
答案 0 :(得分:1)
您是否尝试使用高级编辑器编辑源代码? (右键单击并选择“显示高级编辑器...”)您可以导航到输入和输出参数部分(通常是最后一个选项卡),进入输出列部分(对于OLE DB,单击OLE DB源旁边的+输出,然后输出列旁边的加号,然后突出显示要更改的列名称)并更改相关列的属性(查找数据类型属性并根据需要更改精度和比例)。如果您无法做到这一点,您可以尝试删除源并将其替换为相同数据的新源(即重新创建此对象将重新查询列属性的连接)。
答案 1 :(得分:0)
我使用xxx.xx掩码更新了数据,因此100变为100.00。这有助于SSIS中的DataReader正确推断出类型。
除此之外,我还发现了另一种简单的方法,它不需要支持任何演员/转换功能 -
UDF_TREAD_DEPTH * 1.00 as UDF_TREAD_DEPTH
这也允许DataReader正确地推断出类型(即精度和标度)。