2014-01-23 70 views
0

我有一個已經得到foreach循環的SSIS包。在foreach循環中我有一個腳本任務。我已經在該腳本任務中放置了斷點,但是問題在於,它只會在第一次迭代中遇到。所以如果F10或F5在第二次迭代中不會再次中斷。在ForEach循環中的SSIS腳本任務中的斷點

我該如何讓它在每次迭代的同一點上每次都能夠中斷?

回答

1

這似乎是SSIS的預期行爲,如聯機叢書中指出:

「如果腳本任務是foreach循環或For循環容器的一部分,調試器會忽略斷點在腳本任務在循環的第一次迭代之後。「

http://technet.microsoft.com/en-us/library/ms137625.aspx

你可以嘗試解決它有以下選擇:

  • 中斷執行,並通過在System.Windows使用MessageBox.Show方法來顯示一個模式消息。表單命名空間。 (在完成調試過程後刪除此代碼。)

  • 引發信息性消息,警告和錯誤的事件。 FireInformation,FireWarning和FireError方法在Visual Studio輸出窗口中顯示事件描述。但是,FireProgress方法,Console.Write方法和Console.WriteLine方法不會在「輸出」窗口中顯示任何信息。來自FireProgress事件的消息出現在SSIS設計器的「進度」選項卡上。有關更多信息,請參閱在腳本組件中引發事件。

  • 將事件或用戶定義的消息記錄到啓用的日誌記錄提供程序。有關更多信息,請參閱登錄腳本組件。

http://technet.microsoft.com/en-us/library/ms136033.aspx

0

我知道這是老問題,但我有一個想法,想分享

,因爲它是被Guilherme的回答,我可以添加一些可能是有用的,如果你的foreach是基於SQL查詢,您可以向其添加ROW_NNUMBER()並將其分配給腳本任務中的變量,您可以比較此變量的值並在任何所需行上中斷任務。

if (Dts.Variables["Your_Variable"].Value.ToString() == "4") { 
    Console.WriteLine("Break"); 
} 

至少你可以停止迭代循環中的任何地方,而不是第一次迭代。