Sql server SSIS查找匹配输出列的精度无效
我以前有一个工作SSIS包。然后我将数据库列数据类型从MONEY更改为DECIMAL23,5。我手动编辑SSIS包XML以更改查找引用MetadataXML中的数据类型。我还将SQL查询列转换为小数23,5 问题是,我仍然收到一个验证错误:Sql server SSIS查找匹配输出列的精度无效,sql-server,ssis,type-conversion,Sql Server,Ssis,Type Conversion,我以前有一个工作SSIS包。然后我将数据库列数据类型从MONEY更改为DECIMAL23,5。我手动编辑SSIS包XML以更改查找引用MetadataXML中的数据类型。我还将SQL查询列转换为小数23,5 问题是,我仍然收到一个验证错误: The LookupName.Outputs[Lookup Match Output].Columns[ColumnName] has a precision that is not valid. The precision must be between
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"
CAST(DbTable.ColumnName AS DECIMAL(28,5)) ColumnName
SqlCommand的类型转换如下:
referenceColumn name="ColumnName" dataType="DT_DECIMAL" length="28" precision="28" scale="5" codePage="0"
CAST(DbTable.ColumnName AS DECIMAL(28,5)) ColumnName
对我来说,精度应该很好,但我缺少什么呢?我对SSIS不太熟悉,所以很有可能我错过了一些东西。正如Nick所建议的,通过打开包并让出价自动更正元数据,问题得到了解决 我最初犹豫是否使用这种方法,因为我的包配置使得在设计时配置数据库连接有点困难。最终,我通过使用单独的设计时连接解决了这个问题。这个改变导致了很多步骤的改变,但我让它工作起来了
不建议手动编辑包XML,即使这看起来是一个小改动。为什么要手动编辑它?为什么不打开包,让出价自动更正元数据呢?好问题。我想我可以直接从XML中更轻松地更改类型。我开始在编辑器中编辑程序包,并使其正常工作。由于元数据未刷新,必须更改几个步骤并重新创建一些步骤。