2010-08-12 78 views
6

我需要從ASP.NET C#頁面上單擊加載並執行SSIS或DTS包,單擊按鈕並在執行結束時報告成功或失敗,如果它失敗的細節應該顯示給用戶。它需要是異步的,因爲工作可能需要很長時間才能完成。用戶應該也可以在運行時取消程序包的執行,如果他願意的話。還需要並行執行多個程序包並跟蹤每個程序包的進度。這是可能實現OR過於複雜,從ASP.NET做到這一點?如果您有任何示例代碼或鏈接,請告訴我。提前致謝。從ASP.NET異步執行SSIS或DTS包裝

+0

如果你有多個池,那麼你需要一個公共的數據庫表和一個單獨的類來處理這個並行執行的問題。不是一件容易的事,我們有這樣的一個,但我們有很多小時的工作和它的習慣。 – Aristos 2010-08-12 10:37:23

回答

1

我解決了這個問題,方法是在表中將DTS/SSIS包執行的用戶請求排隊,然後在Windows服務中讀取它們並通過使用ThreadPool類產生線程並行執行它們。它工作正常。謝謝。這種方法的缺點是輪詢,使其事件驅動,創建一個WCF服務,並將其託管在Windows服務將是最好的,我會接下來嘗試。感謝你的回覆。順便說一句,我不能使用SQL Server代理,這是不允許的,因爲我的公司的IT政策。

1

您可能會考慮的解決方案是使用SQLServer作業。您可以將軟件包設置爲有或沒有運行計劃的作業。您可以通過在msdb系統數據庫中運行存儲過程和查詢來啓動,取消,獲取作業狀態並獲取失敗信息。您可以運行ASP.NET C#頁面中的過程和查詢。

在作業中運行SSIS/DTS包是常用的方法。而且,該解決方案還允許您使用Management Studio來管理這些作業。

+0

感謝您的回覆,但這是如何工作的? SSIS/DTS包存儲在網絡服務器上。我需要在網絡服務器上創建一個作業嗎?如果是這樣,我是否需要在其上安裝SQL組件來創建作業(不確定我公司的服務器策略是否允許這樣做)?存儲過程如何知道位於其他位置的作業? – RKP 2010-08-12 13:55:51

+0

你確定SSIS/DTS在網絡服務器上嗎?它們應該是DB的一部分... – 2010-08-12 14:16:59

+0

是的,SSIS/DTS包不在數據庫中,它們存儲在Web服務器上的文件系統上。如果我需要創建一個作業並使用存儲過程調用它,那麼是否需要在Web服務器上安裝任何SQL組件?如果沒有,我將不得不在我原來的問題中選擇。 – RKP 2010-08-12 14:35:49

0

您可以使用Rhino ETL代替SSIS。這是一個功能完備的ETL庫,它允許您使用C#編寫ETL作業。

+0

ETL ?? ahhh謝謝Google:** E ** xtract ** T ** ransform ** L ** oad – 2013-07-17 10:38:36