SSIS脚本任务中的断点,该任务位于ForEach循环内

SSIS脚本任务中的断点,该任务位于ForEach循环内,ssis,task,breakpoints,Ssis,Task,Breakpoints,我有一个SSIS包,它有一个foreach循环。在foreach循环中,我有一个脚本任务。我在脚本任务中设置了断点,它会被命中,但问题是,它只会在第一次迭代中被命中。因此,如果F10或F5在第二次迭代时不会再次中断 我如何才能使它在每次迭代的同一点上每次都中断。这似乎是SSI的预期行为,如在线丛书中所述: “如果脚本任务是Foreach循环或For循环容器的一部分,则调试器将在循环的第一次迭代后忽略脚本任务中的断点。” 您可以尝试使用以下替代方案来解决此问题: 使用System.Window

我有一个SSIS包,它有一个foreach循环。在foreach循环中,我有一个脚本任务。我在脚本任务中设置了断点,它会被命中,但问题是,它只会在第一次迭代中被命中。因此,如果F10或F5在第二次迭代时不会再次中断


我如何才能使它在每次迭代的同一点上每次都中断。

这似乎是SSI的预期行为,如在线丛书中所述:

“如果脚本任务是Foreach循环或For循环容器的一部分,则调试器将在循环的第一次迭代后忽略脚本任务中的断点。”

您可以尝试使用以下替代方案来解决此问题:

  • 使用System.Windows.Forms命名空间中的MessageBox.Show方法中断执行并显示模式消息。(完成调试过程后删除此代码。)

  • 引发信息性消息、警告和错误的事件。FireInformation、FireWarning和FireError方法在Visual Studio输出窗口中显示事件描述。但是,FireProgress方法、Console.Write方法和Console.WriteLine方法在输出窗口中不显示任何信息。来自FireProgress事件的消息显示在SSIS设计器的“进度”选项卡上。有关详细信息,请参见在脚本组件中引发事件

  • 将事件或用户定义的消息记录到启用的日志记录提供程序。有关更多信息,请参阅在脚本组件中登录


我知道这是一个老问题,但我有一个想法想和大家分享

正如Guillerme所回答的那样,我可以添加一些可能有用的东西,如果您的foreach基于SQL查询,您可以向它添加
行编号()
,并将其分配给变量,在脚本任务中,您可以比较此变量的值,并在您想要的任何行上中断任务

if (Dts.Variables["Your_Variable"].Value.ToString() == "4") {
    Console.WriteLine("Break");
}
至少可以停止循环中的任何位置的迭代,而不是第一次迭代