2014-07-14 49 views
2

我正在使用MSSQL 2012的SSIS。它的Execute Process Task组件用于执行任何应用程序。SSIS执行低优先级的进程任务

我想执行一个优先级较低的应用程序,以便它不会在运行时挂起所有其他进程。

在cmd.exe中我们可以使用start /low。有没有办法在SSIS中做到这一点,而不需要在批处理文件中包装应用程序执行命令?

回答

0

使用执行过程任务,可以在参数部分中指定使用start/low。我认为它会正常工作。你是否遇到过这样的问题?

这是一个link,可以帮助你。

+0

它没有工作。如果我调用cmd.exe并传递'start/low/C路径\ app.exe parameter1 parameter2'作为参数,则app.exe不会收到其参数,或者它不会以低优先级执行。 – Hikari

0

当前SSIS不提供任何工具来设置组件优先级。您可以按照程序包要求实现您自己的机制。

MSDN解决方法:

集团具有同等的依赖成 序列容器中的低优先级任务。将预执行事件添加到更高优先级的 任务中,该任务设置指示任务已启动的布尔变量。 添加一个while循环,告诉线程睡眠一段时间 (5秒?),而变量为false。使序列容器 具有依赖于while循环完成的低优先级任务。 需要注意一些事项,以避免包 死锁,因为循环正在等待一些永不发生的事情。

虽然不理想,但它是一种改进。如果它按预期工作,则结束 ,如果您的较高优先级任务已启动,则会监视一个有效空闲的线程,以查看 。一旦它检查完所有的 它监视序列容器的事情变为活动状态并且 您的较低优先级任务可以开始执行。

此外,您可以使用脚本组件来查询系统资源。