我曾经有一个有效的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不太熟悉,所以我很有可能错过了一些东西。
答案 0 :(得分:0)
就像Nick建议的那样,通过打开包并让BIDS自动更正元数据来解决问题。
我最初犹豫是否使用此方法,因为我的包配置使得在设计时配置数据库连接有点困难。最终我通过使用单独的设计时连接解决了它。这一变化导致了许多改变的步骤,但我得到了它的工作。
不建议手动编辑包XML,即使它看起来像是一个小小的改动。