我在同一个SSIS包的多次执行时遇到问题。 我想允许并行执行,每个执行处理一个数据子集。
到目前为止,我正在考虑使用一些状态变量,但我不知道在哪里存储它。
一种选择是使用保持连接打开并使用临时表来协调任务负载。但是,temptables会导致很多编译问题,而且它们不能维护。
是否有其他方法可以识别包的当前执行ID或执行范围?到目前为止,我没有在SSIS中找到任何状态(在内存中或存储在别处),我可以使用它来分区/隔离每次执行。
答案 0 :(得分:1)
基于我上面的评论你可以试试这个。我不知道这是你想要的,但也许它可以给你一个进一步的暗示。
我正在使用workflowid 1调用示例。这就是我的意思,您可以更改SQL作业代理步骤,然后更改每个步骤的参数,因此,您可以添加执行workflowid 1和workflowid 4的2个步骤。然后它只会运行约束成功的序列容器。
编辑SQL任务获取WorkflowID 将参数映射添加到包变量
制定优先约束,以便只允许一个ID通过 注意:您可以添加parentworkflowid,以便在需要某些相同的逻辑时,可以在序列容器中对流进行多样化处理
在代理中创建新的SQL作业。添加所需步骤通知;我为workflowid 1和2创建了两个步骤。截断并删除
然后我编辑我的步骤并使用正确的值更正变量。这将是用于截断的工作流1和用于删除的工作流2 这也可能是你做的另一项工作,这取决于你的需求。