我正在使用SSIS在兩個數據庫之間同步數據。我過去使用過SSIS和DTS,但我通常會爲這種性質的應用程序編寫一個應用程序(我是編碼器,它對我來說更簡單)。如何克服SSIS調試性能差的問題?
在我的軟件包中,我使用返回大約15,000行的SQL Task。我已經把它和一個Foreach容器連接起來了,在這個容器中,我將結果集列的值賦給變量,然後將這些變量映射到提供給另一個SQL任務的參數。
我遇到的問題是調試,而不僅僅是更復雜的調試,如斷點和運行時評估值。我的意思是,如果我在調試而不是沒有調試的情況下運行,需要幾個小時才能完成。 我結束了重寫的過程在Delphi中,下面就是我想出了:
完整的數據推送:
這拉15000行,更新的目標表的每一行,然後再換11000行並更新每行的目標表。
調試:
Delphi應用程序:139S
SSIS 4小時46分
不調試:
Delphi應用程序:132S
SSIS:384s
的更新數據:
這拉3,000行,但沒有更新對目的地表格是必需的或是做出的。然後它將拉出11,000行,但是,不需要更新,也不需要對目標表進行更新。
調試:
Delphi應用程序:42s中
SSIS 1小時10分
不調試:
Delphi應用程序:34S
SSIS:205S
奇怪的是的,我感覺大部分時間花費在調試上只是更新Visual Studio中的UI元素。如果我觀察進度選項卡,每次迭代都會將一個節點添加到樹中(總計數千),隨着進程的繼續,這個節點變得越來越慢。試圖停止調試通常不起作用,因爲Visual Studio似乎陷入了更新UI的循環中。如果我檢查SQL Server的分析器,則沒有正在進行的實際工作。我不確定機器是否重要,但它應該超過這個工作(四核,4個ram,512 mb視頻卡)。
這種行爲是否正常?正如我所說的,我是一個交易編碼人員,所以我沒有任何問題爲這類事情編寫應用程序(實際上,編寫應用程序比在SSIS中「繪製」應用程序花費的時間少得多,但我認爲在SSIS中完成更多工作時邊距會縮小),但我試圖找出像SSIS和DTS這樣的東西適合我的工具箱。到目前爲止,沒有任何關於它給我留下了深刻印象也許我以某種方式濫用或濫用SSIS?
任何幫助將不勝感激,在此先感謝!