输出列上的数据类型不反映SSIS中源项的更改

时间:2013-11-29 14:18:24

标签: sql-server-2005 ssis

在源项目中使用sqlCommand:

SELECT SUBSTRING(MKGDiagnoses.ICD9Code, 2,7) AS ICD9Code 
FROM ...     

列ICD9Code输出长度为7个位置的字符串。 现在改为:

SELECT SUBSTRING(MKGDiagnoses.ICD9Code, 2,6) AS ICD9Code 
FROM ...   

因此,该列的数据类型将更改为 6 位置的字符串。

这样的更改从未反映在输出列的数据类型中,而外部列的数据类型确实更改为[DT_STR],长度为6。

advanced editor

这是预期的行为吗?这种行为是否可以覆盖?

1 个答案:

答案 0 :(得分:1)

预期?有点?我无法在此找到我之前的答案,但基本的是在首次创建项目时设置元数据。这是一项昂贵的操作,因此设计人员试图限制它必须引用元数据的次数,因此更改数字的精度或增加/减少字符串的长度通常不是“足够大”的变化来强制元数据刷新请求。

如果我在演示时更改了一个列,我的懒惰就是重命名源查询中的列(然后将其命名)。

原始

SELECT SUBSTRING(MKGDiagnoses.ICD9Code, 2,7) AS ICD9Code 
FROM ...     

临时

SELECT SUBSTRING(MKGDiagnoses.ICD9Code, 2,6) AS ICD9CodeShort 
FROM ...     

还原

SELECT SUBSTRING(MKGDiagnoses.ICD9Code, 2,6) AS ICD9Code 
FROM ...     

如果要修复很多列,我通常会进行查询SELECT 1 AS foo,然后重新打开编辑器并使用我的真实源查询。