2011-06-24 41 views
4

我有一個SSIS包,可將數據從excel文件加載到數據庫。從c#web應用程序調用SSIS並顯示進度

用戶轉到內部網頁(正常的c#.net 4.0 web應用程序),選擇他們想上傳的文件,然後單擊一個按鈕。該按鈕將文件複製到服務器,然後啓動調用該程序包的SQL作業。這工作正常,而且用戶不知道工作何時完成。

向用戶顯示包已完成(或失敗)的最佳方式是什麼?

我看到鏈接像 - http://www.programminghelp.com/database/sqlserver/sql-server-integration-services-calling-ssis-package-in-c/但這是用於C#控制檯項目。使用Web應用程序執行此操作的最佳方法是什麼?

回答

2

有很多方法可以做到這一點,但如果您正在尋找一種簡單的方法,那麼您可以使用System.Net.Mail命名空間中的SmtpClient class在作業完成時向用戶發送電子郵件。 (該頁面上有一個很好的簡單代碼段,您可以隨時重複使用。)當然,您必須設置發送帳戶(例如[email protected])並知道用戶的電子郵件地址。

這是否是您的方案中的最佳解決方案是有爭議的,但我已經看到它在多個系統中使用(並且自己使用它),其中這樣的過程需要相當多的時間,例如幾分鐘或更長的時間。如果您的導入只需要幾秒鐘,那麼電子郵件解決方案可能會過度。

一個更簡單的AJAX風格的解決方案可能涉及瀏覽頁面(啓動後),通過計時器輪詢作業並顯示頁面內的進度。即使是自動重新加載也可能起作用。您需要的這段元數據是用戶執行的作業的唯一標識符。

+0

我們已經在SSIS包中完成了這項工作。在完成或失敗時發送電子郵件。如果程序包經歷了8個不同的步驟並需要5分鐘,我們希望讓用戶知道步驟1或步驟2(等等)已完成。無論如何顯示這個? – SqlSandwiches

+0

是的。但是你必須從頁面設置一個異步進程(想想AJAX)來留在頁面上,並且還要接收進度更新。 –

+0

查看我更新的答案。您可能可以使用自動刷新頁面。不知道爲什麼我假設你不想使用AJAX,但這是你的選擇之一。 –