我花了好幾天的時間試圖解決這個問題,但仍然堅持這一點,我已經在本網站上發佈了一些問題,但沒有得到滿意的答案。我想這次更加清楚,希望能得到更好的答案。我已經通過這篇文章已經http://blogs.msdn.com/b/michen/archive/2007/03/22/running-ssis-package-programmatically.aspx ,這裏是我的問題(我需要運行從ASP.NET SSIS包)以編程方式運行SSIS軟件包的問題
選項1是不適合我,因爲它可能如果回收工作的歷程消耗內存
選項2也是不適合的,因爲在創造一個新的進程,並傳遞上下文給新工藝的安全問題看起來對我來說很複雜(根據支持文章)
選項3不適合使用SQL Server代理運行SSIS包是不允許的我工作的公司(我猜它需要在應用服務器上安裝數據庫引擎,不確定)。但SSIS安裝在應用程序服務器上。
選項4 & 5將擁有相同的問題選項1 & 2.
我想剩下的唯一選擇現在是創建一個Windows服務,並開始從ASP.NET服務。但是這會允許並行運行多個包嗎? OR還有更好的替代解決方案嗎?請告訴我。謝謝。
這個答案給了我一些希望。我正在考慮在WCF服務(從ASP.NET網頁異步調用)中調用DTEXEC並執行該包。這比使用Windows服務更好嗎?因爲我需要能夠並行運行多個軟件包。我猜DTEXEC應該使用與WCF服務相同的上下文。但是如果需要的話(如果它運行很長時間的話),我還需要殺死正在運行特定程序包的DTEXEC進程(通過傳遞程序包名稱)。不知道該怎麼做。 – RKP 2010-09-02 14:46:17
你會在哪裏主持WCF服務? 另一種選擇是使用AppFabric並公開一個WorkflowService,它使用SSIS庫而不是dtexec運行SSIS包。在這種情況下,您可以監控運行 軟件包oob。 我仍然認爲Windows服務是最簡單的選擇。這個Windows服務只需要擔心運行包。然後你可以使用任何其他方式來安排這個軟件包:直接從asp,使用wcf服務或其他任何方式。 – stombeur 2010-09-03 06:50:40
windows服務選項的問題是它一次只能執行一個包。如果有許多軟件包等待服務,這可能會導致延遲,因爲如果我使用WCF服務,我猜測我可以從ASP.NET網頁向WCF服務發出多個異步請求,並且WCF服務可以爲每個服務啓動DTEXEC進程請求和這種方式我可以有多個包並行運行,避免任何延遲。 WCF服務將託管在IIS中,並配置一個具有運行包的權限的帳戶(假設DTEXEC繼承安全上下文,不確定)。 – RKP 2010-09-03 11:24:29