SSIS中的州/执行ID

时间:2017-10-10 12:48:39

标签: ssis

我在同一个SSIS包的多次执行时遇到问题。 我想允许并行执行,每个执行处理一个数据子集。

到目前为止,我正在考虑使用一些状态变量,但我不知道在哪里存储它。

一种选择是使用保持连接打开并使用临时表来协调任务负载。但是,temptables会导致很多编译问题,而且它们不能维护。

是否有其他方法可以识别包的当前执行ID或执行范围?到目前为止,我没有在SSIS中找到任何状态(在内存中或存储在别处),我可以使用它来分区/隔离每次执行。

1 个答案:

答案 0 :(得分:1)

基于我上面的评论你可以试试这个。我不知道这是你想要的,但也许它可以给你一个进一步的暗示。

我正在使用workflowid 1调用示例。这就是我的意思,您可以更改SQL作业代理步骤,然后更改每个步骤的参数,因此,您可以添加执行workflowid 1和workflowid 4的2个步骤。然后它只会运行约束成功的序列容器。

创建包变量 Create Package Parameter

创建您的包裹流程 Create Package with local variable

编辑SQL任务获取WorkflowID Setup SQL Task to get workflowID 将参数映射添加到包变量

setup Parameter Mapping

将结果集放入名为WorkflowIDrun 的局部变量中 Setup Resultset

制定优先约束,以便只允许一个ID通过 注意:您可以添加parentworkflowid,以便在需要某些相同的逻辑时,可以在序列容器中对流进行多样化处理 Edit your precedence constraints

使用workflowid 1运行包时的最终结果 Package run with workflowid 1

在代理中创建新的SQL作业。添加所需步骤通知;我为workflowid 1和2创建了两个步骤。截断并删除

SQL Job setup

然后我编辑我的步骤并使用正确的值更正变量。这将是用于截断的工作流1和用于删除的工作流2 这也可能是你做的另一项工作,这取决于你的需求。 Step setup with correct workflowID