2010-02-02 97 views
4

因此,我在SSIS中創建了一個包,用於從文本文件中讀取數據並將其加載到數據庫表中。SQL Server集成服務SSIS 2005 - 如何讓用戶運行包?

對於非技術性最終用戶在需要時運行此操作的最佳方法是什麼?

我的老闆正在考慮讓SP啓動它,然後在報告服務中發佈報告啓動存儲過程。當然,還有更好的方法!

回答

1

這並不完全簡單,並附帶一些健康警告,但可以將SSRS報告配置爲使用SSIS包作爲數據源 - 請參閱http://msdn.microsoft.com/en-us/library/ms345250.aspx

啓用此功能後,您可以向SSIS包添加額外步驟,以將一個(或多個)report datasets輸出到SSRS報告。

+0

謝謝埃德。我得到了這個設置,這很酷。 問題。如果軟件包失敗,例如某人刪除了一個輸入文件,報告只會說「軟件包失敗...」。有沒有辦法獲得詳細的故障信息?告訴用戶到底發生了什麼問題。 – Greg 2010-02-22 20:16:54

+0

@Greg - 好問題!也許有一種方法是使用SSIS錯誤處理程序將「錯誤」數據集(包含失敗的詳細信息)返回給可能有條件顯示的SSRS?我認爲這應該工作,但我沒有嘗試過。 – 2010-02-23 07:57:32

+0

我的SSIS包將文件寫入網絡共享,並且由於某些身份驗證問題,我始終無法使其工作。在放棄並進入PowerShell之前,我花了很長時間與Kerberos搞混了。 – 2017-07-10 00:13:11

2

ASP.NET是一個很好的解決方案:http://www.codeproject.com/KB/aspnet/SSIS_DOTNET.aspx

+0

哇。我不知道你可以從.NET調用SSIS ... – Sung 2010-02-02 23:36:33

+1

雖然這可能是一個很好的小包解決方案,但我認爲你會遇到更大包的問題。通過這種方法,您可以在HTTP請求的上下文中運行程序包,這意味着如果您的程序包運行的時間超過HTTP超時值,它將被終止。此外,IIS AppPool可能會由於設置了內存/ CPU限制而自動重新啓動,並且您的軟件包也會被終止。如果你真的想從.NET運行包,我會建議使用WCF端點來構建一個Windows服務,WCF端點將用於啓動包和接收狀態。 – unclepaul84 2010-02-04 15:58:06

2

您也可以創建一個SQL代理作業以運行空程序包。然後創建一個Web前端來調用EXEC msdb.dbo.sp_start_job N'Your SSIS Job Name';

+0

聽起來很有希望。我能得到任何可以在Web前端顯示的反饋嗎?例如,錯誤,加載的行等? – Greg 2010-02-04 04:10:28

+0

是的。您可以圍繞sp_help_job存儲過程開發一個包裝程序來輪詢Job狀態。對於插入的行,您需要構建自定義的審覈表並將其鍵入包執行ID。 – unclepaul84 2010-02-04 15:42:52