2014-07-14 47 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循環完成的低優先級任務。 需要注意一些事項,以避免包 死鎖,因爲循環正在等待一些永不發生的事情。

雖然不理想,但它是一種改進。如果它按預期工作,則結束 ,如果您的較高優先級任務已啓動,則會監視一個有效空閒的線程,以查看 。一旦它檢查完所有的 它監視序列容器的事情變爲活動狀態並且 您的較低優先級任務可以開始執行。

此外,您可以使用腳本組件來查詢系統資源。