SSIS中的状态/执行ID
问题描述:
对于同一个SSIS包的多次执行,我遇到了问题。 我想允许并行执行每个处理一个数据子集。SSIS中的状态/执行ID
到目前为止,我正在考虑使用一些状态变量,但我不知道在哪里存储它。
一个选项是使用保持连接打开并使用临时表来协调任务负载。但是,临时表会导致很多编译问题,而且它们不可维护。
是否有其他方法来标识包或执行范围的当前执行ID?在SSIS中,我没有发现任何状态(无论是在内存中还是存储在别处),我可以使用它来对每个执行进行分区/隔离。
答
所以根据我上面的评论,你可以试试这个。我不知道这是你想要的东西,但也许它可以让你有进一步的暗示。
我正在用workflowid 1调用这个例子。这就是我的意思是您可以在您的SQL Job代理步骤中更改,然后更改每个步骤的参数,因此fx您可以添加执行workflowid 1和workflowid 4的2个步骤然后它将只运行那个约束成功的序列容器。
编辑您的SQL任务获取WorkflowID 添加Parametermapping到您的包变量
让你的优先约束,因此只允许一个ID通过 注意:您可以添加parentworkflowid的,这样就可以如果您需要某些相同的逻辑,则会在序列容器内分散您的流程
创建您的代理一个新的SQL作业运行。添加所需的步骤通知;我创建了workflowid 1和2截断两步并删除
然后我修改我的步骤和纠正与正确值的变量。这将是截断工作流程1和删除工作流程2的工作流程 这可能也是您做其他工作的原因,这取决于您的需求。
你可以做到这一点很难。创建一个workflowid包变量,然后针对ssis包中的每个不同流确保每个容器只使用一个工作流ID,方法是设置优先约束。然后,您可以通过不同的工作来调用它,并使用不同的工作流ID,这将在您的流程的不同方向上进行。 – plaidDK
也许这是一个XY问题。在你的问题中不清楚为什么你有多个并发执行的问题。也许有一种完全不同的方式来解决你的实际问题。 –
@TabAlleman我想允许并行执行并同时减少锁定。也就是说,我希望这些软件包能够快速,频繁且相互独立。如果我能以某种方式分割执行,它将是一个最佳解决方案。当然,我可以有多个包,每个其他变量的副本,正如plaidDK所建议的,但它不可维护。 – Candide