【问题标题】:Datatype on output column not reflecting change to source item in SSIS输出列上的数据类型不反映对 SSIS 中源项的更改
【发布时间】:2013-11-29 14:18:23
【问题描述】:

在源项中获取 sqlCommand:

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

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

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

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

这样的变化永远不会反映在输出列的数据类型中,而外部列的数据类型确实更改为长度为 6 的 [DT_STR]。

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

【问题讨论】:

    标签: sql-server-2005 ssis


    【解决方案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,然后重新打开编辑器并使用我的真实源查询。

    【讨论】:

    • 外部列的类型变化不是重新评估元数据的结果吗?我希望它也能改变输出列的类型。
    • 是的,正如 bilinkc 所说,最快的事情就是重命名它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2010-12-10
    • 2014-03-21
    相关资源
    最近更新 更多