SSIS查找匹配输出列具有无效的精度

时间:2014-11-16 08:05:03

标签: sql-server ssis type-conversion

我曾经有一个有效的SSIS包。然后我将数据库列数据类型从MONEY更改为DECIMAL(23,5)。我手动编辑了SSIS包XML以更改查找ReferenceMetadataXml中的数据类型。我还将SQL查询列CAST到DECIMAL(23,5)。

问题是我仍然收到验证错误:

The LookupName.Outputs[Lookup Match Output].Columns[ColumnName] has a precision that is not valid. The precision must be between 1 and 38.

SSIS包中的我的ReferenceMetadataXml如下所示:

referenceColumn name="ColumnName" dataType="DT_DECIMAL" length="28" precision="28" scale="5" codePage="0"

SqlCommand有这样的CAST:

CAST(DbTable.ColumnName AS DECIMAL(28,5)) ColumnName

对我而言,精确度应该没问题,但我错过了什么?我对SSIS不太熟悉,所以我很有可能错过了一些东西。

1 个答案:

答案 0 :(得分:0)

就像Nick建议的那样,通过打开包并让BIDS自动更正元数据来解决问题。

我最初犹豫是否使用此方法,因为我的包配置使得在设计时配置数据库连接有点困难。最终我通过使用单独的设计时连接解决了它。这一变化导致了许多改变的步骤,但我得到了它的工作。

不建议手动编辑包XML,即使它看起来像是一个小小的改动。