【问题标题】:SSIS Passing Parameters from Master Package to Child to Data Flow TaskSSIS将参数从主包传递到子包到数据流任务
【发布时间】:2015-08-15 03:55:29
【问题描述】:

我一直在与一位同事一起尝试设置主 SSIS 包模板和子 SSIS 包模板。这些模板查看审计表,以识别正确的批次或创建新批次。批处理的开始和结束时间被传递到 CDC(更改数据捕获)表值函数中,该函数返回表的开始和结束 LSN。

这通过识别主包中批次的开始和结束日期来工作。然后将这些日期设置为主包中的用户变量。然后主包调用子包并将用户变量开始时间和用户变量结束时间传递给子包包级别参数。此时,我可以将日期打印或写入子包中的随机表,并且它们显示正确的值。

接下来我想添加一个数据流任务,它将使用子包包级别参数(从主包传递)在正确的时间段内运行表值函数。这应该返回可以在源查询中使用的开始和结束 LSN。不幸的是,我看到的是数据流任务从不执行数据流中的任何任务。数据流任务有一个漂亮的绿色复选标记,但如果您打开数据流,则没有执行任何任务。

我们在这个问题上摸不着头脑,甚至创建了一个简单的概念证明,它将一个值从主包传递到子包,然后尝试从子包 DFT 打印它,但它永远不会执行。

任何想法可能导致数据流被忽略但显示成功状态?

【问题讨论】:

    标签: ssis parameter-passing


    【解决方案1】:

    在经历了很多头痛和沮丧之后,我终于找到了答案,或者更确切地说是我的同事。过去,我总是创建从 SSMS 中的工作调用的独立包。在开发单个包时,我通常在数据流中完成的最后一步的末尾添加数据转换或派生列组件。然后,我在数据转换/派生列的路径上设置了一个数据查看器。这使我可以在继续下一个数据流之前检查数据。

    我在处理调用我正在处理的子包的主包时使用了这种策略。这就是问题的根源。当主包调用子包时,它会识别出数据流中的组件稍后不会在包中使用并跳过它们。

    总结:如果您使用主包调用子包,请确保数据流的所有部分稍后在包中使用,否则在处理过程中将被跳过。

    【讨论】:

    • “确保使用所有数据流”是什么意思?应该使用我的数据流,但我认为它们不是(我的使用与我认为的相同)。如果我自己执行子包,数据流会得到绿色勾号,如果我通过其父包执行子包,我不会得到绿色勾号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多