Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS查找匹配输出列的精度无效_Sql Server_Ssis_Type Conversion - Fatal编程技术网

Sql server SSIS查找匹配输出列的精度无效

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

我以前有一个工作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 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中更轻松地更改类型。我开始在编辑器中编辑程序包,并使其正常工作。由于元数据未刷新,必须更改几个步骤并重新创建一些步骤。