您能發佈有關此聲明的更多信息嗎?
「隨着數據的增長,作業A不能完成2,作業B啓動失敗」。
您的錯誤消息的詳細列表將有所幫助。我想知道的是...
1)你的錯誤是由於硬件資源的限制嗎?
或
2)它可以通過在SSIS加入Precedence Constraints到你的包來解決?
或
3)都發生了嗎?
如果我承擔,這個問題的一部分,至少可以通過在SSIS包添加優先約束,往往一個跑進情況需要解決的時刻是這樣的:
我有細上運行的幾個包他們自己就像是單獨運行時一樣。然而,當他們一起跑時,他們並不會很好地相處。還有什麼我真的沒有心情,也沒有時間我需要重新設計/重構這幾個包作爲一個具有所需優先約束的大包。
發生這種情況時,該解決方案提出了自己:
- 創建一個新的「父」包
- 添加Execute Package tasks到父包打電話給你的孩子包
- 使用優先約束,約束每個孩子軟件包運行的硬件資源允許和數據模型要求的並行度如下或更少
This Parent pa ckage將在其中有沒有數據流任務。而是唯一的目的是管理控制流程邏輯。如果這給了你所需要的性能,而不是簡單地將它用作真正需要完成的包重構的工作,那麼這是一個可行的選擇。確定這是一個試驗和錯誤的問題,以使其「正確」。
一般來說,我會說我比較喜歡把複雜的SQL Server代理作業作爲主控制包,因爲我覺得SSIS配置比較簡單,給你更多的靈活性,這種方法允許你封裝你的ETL邏輯在SSIS中,而不是通過SSIS和SQL Server Agent進行分發。對於我的很多ETL任務,我對SQL Server代理的使用已經歸結爲調度和一個調用控制流主題Parent包的簡單步驟。
我想說,使用單獨的臨時表作爲解決問題的一種方法也值得研究。這是數據模型專家最關心的一個數據模型問題。如果您當前的數據模型不允許並行運行包,那麼該方法可以提供幫助(例如,多個進程通過批量插入將數據同時插入到同一個表中)。但是,如果性能的根本問題是硬件資源約束,那麼多個臨時表解決方案並不是一個好選擇。
我想最終會找到最佳性能,您可能最終會使用這兩種解決方案的混合,並可能爲您的ETL請求額外的硬件資源。
很難知道什麼建議沒有更多的細節問題。希望這可以幫助。
你可能想要實現某種代理鏈接 - http://dba.stackexchange.com/questions/3605/chaining-sql-server-agent-jobs – OnoSendai
我同意OnoSendai。如果服務器核心允許,儘快使用Parallelism(可能的話):http://technet.microsoft.com/en-us/library/dd795221(v=sql.100).aspx –