我一直在与同事一起努力设置主SSIS包和子SSIS包模板。这些模板会查看审计表,以便识别正确的批次或创建新的批次。批处理的开始和结束时间将传递到CDC(更改数据捕获)表值函数,这些函数返回表的开始和结束LSN。
这可以通过识别主包中批次的开始和结束日期来实现。然后将这些日期设置为主包中的用户变量。然后,主包调用子包并将用户变量开始时间以及用户变量结束时间传递给子包包级别参数。此时,我可以将日期打印或写入子包中的随机表,并显示正确的值。
接下来,我想添加一个数据流任务,该任务将使用子包包级别参数(从主包传递)在正确的时间段内运行表值函数。这应该返回Start&结束可以在源查询中使用的LSN。不幸的是,我看到的是数据流任务从不执行数据流中的任何任务。数据流任务获得了一个很好的绿色复选标记,但是如果打开数据流,则没有任何任务被执行。
我们在这个问题上摸不着头脑,甚至创建了一个简单的概念证明,它将一个值从主包传递给sub,然后尝试从子包DFT中打印它,但它永远不会执行。
任何可能导致数据流被忽略但仍显示成功状态的想法?
答案 0 :(得分:0)
当我使用调用我正在处理的子包的主包时,我正在使用这种策略。这是问题的根源。当主程序包调用子程序包时,它会识别数据流中的组件以后不会在程序包中使用并跳过它们。
总结一下:如果您正在使用主程序包来调用子程序包,请确保稍后在程序包中使用所有数据流,否则在处理过程中将跳过它们。