如何确保一个 SSIS 任务在并行处理期间最先启动?
How can I ensure that one SSIS task is among the first to start during parallel processing?
我有一个启动多个从属任务的 SSIS 主包。有很多包都可以 运行 并行,并且在大多数情况下 运行 哪个并不重要。有 N 个工作线程可用,大约 Nx3 个包到 运行,因此 SSIS 将启动 N 一次。
不过,其中一个比其他 运行 花费的时间要长得多。
所以我总是希望该包成为第一个启动的包,而不是等待运行的可用线程的包。
我可以将它分解到它自己的并行序列容器中,似乎 可以工作,但我不知道它是否会总是工作。
有什么方法可以确定最长的 运行ning 作业将始终占用第一个可用线程之一?
事实上,据我所知,没有一种方法可以为它应该首先选择的线程提供权重。
但是,您一定可以更改设计以使其如此。在您的序列容器中,其中的 N 个任务中的任何一个都可以点头开始。但是,如果您将序列容器放入现有容器并将低级别任务移入其中,它们将全部 运行 并行,因此您只需要确保长 运行ning 任务有足够的并行化容器启动前的加速时间。因此,在内部容器中添加一个脚本任务前驱体,使其休眠 3、5、8 秒,无论您认为是否足够延迟,都足以让长任务有足够的时间开始。
int delayInSeconds = 3;
int delayInMillSeconds = delayInSeconds*1000;
System.Threading.Thread.Sleep(delayInMillSeconds);
显然,将延迟设置为 SSIS 变量,这样您就可以在不更改脚本的情况下调整延迟。
假设这是维度加载,我有一个 table 驱动此行为但有点不同。我的序列容器看起来像
Execute SQL Task (Get outstanding tasks)
Foreach Recordset (Take a task)
Execute Package Task (do work, final step records task is complete)
我有 N 个并行处理序列容器。如果我将某件事标记为一项大工作,它将成为未完成任务列表中唯一的事情
PackageName|ContainerName|Task Name|Priority
P1 |C0 |Long job | 1
P1 |C1 |Long job2| 1
P1 |C2 |Lil job1 | 10
P1 |C2 |Lil job2 | 20
P1 |C2 |Lil job3 | 30
运行 较小的作业顺序允许我为服务器留出一些喘息的空间,但在 运行ning 长线程完成之前,作业堆栈仍会完成很长时间。
我有一个启动多个从属任务的 SSIS 主包。有很多包都可以 运行 并行,并且在大多数情况下 运行 哪个并不重要。有 N 个工作线程可用,大约 Nx3 个包到 运行,因此 SSIS 将启动 N 一次。
不过,其中一个比其他 运行 花费的时间要长得多。
所以我总是希望该包成为第一个启动的包,而不是等待运行的可用线程的包。
我可以将它分解到它自己的并行序列容器中,似乎 可以工作,但我不知道它是否会总是工作。
有什么方法可以确定最长的 运行ning 作业将始终占用第一个可用线程之一?
事实上,据我所知,没有一种方法可以为它应该首先选择的线程提供权重。
但是,您一定可以更改设计以使其如此。在您的序列容器中,其中的 N 个任务中的任何一个都可以点头开始。但是,如果您将序列容器放入现有容器并将低级别任务移入其中,它们将全部 运行 并行,因此您只需要确保长 运行ning 任务有足够的并行化容器启动前的加速时间。因此,在内部容器中添加一个脚本任务前驱体,使其休眠 3、5、8 秒,无论您认为是否足够延迟,都足以让长任务有足够的时间开始。
int delayInSeconds = 3;
int delayInMillSeconds = delayInSeconds*1000;
System.Threading.Thread.Sleep(delayInMillSeconds);
显然,将延迟设置为 SSIS 变量,这样您就可以在不更改脚本的情况下调整延迟。
假设这是维度加载,我有一个 table 驱动此行为但有点不同。我的序列容器看起来像
Execute SQL Task (Get outstanding tasks)
Foreach Recordset (Take a task)
Execute Package Task (do work, final step records task is complete)
我有 N 个并行处理序列容器。如果我将某件事标记为一项大工作,它将成为未完成任务列表中唯一的事情
PackageName|ContainerName|Task Name|Priority
P1 |C0 |Long job | 1
P1 |C1 |Long job2| 1
P1 |C2 |Lil job1 | 10
P1 |C2 |Lil job2 | 20
P1 |C2 |Lil job3 | 30
运行 较小的作业顺序允许我为服务器留出一些喘息的空间,但在 运行ning 长线程完成之前,作业堆栈仍会完成很长时间。