C# SSIS:如何基于变量求值暂停任务并重新开始执行
我被困在这个问题上: 我使用C# SSIS:如何基于变量求值暂停任务并重新开始执行,c#,ssis,C#,Ssis,我被困在这个问题上: 我使用For循环任务计算一个变量,该变量包含表中记录/行计数的值 只要变量大于零,我就需要让循环继续执行下面的任务 步骤如下: 如果值大于0,则计算变量运行任务 暂停任务X秒,如果变量仍然较大,则重新计算变量 然后再次运行任务,再次暂停 继续暂停并运行,直到变量的计算结果为零,然后退出循环 这就是我所拥有的,但它只是一个草图: 步骤1:对于循环容器: 步骤2:脚本任务: 代码: 步骤3:获取记录计数: 最后,获取计数的结果集: 我在代码部分进行了修改。请看下面的代码
For循环任务
计算一个变量,该变量包含表中记录/行计数
的值
只要变量大于零,我就需要让循环继续执行下面的任务
步骤如下:
我在代码部分进行了修改。请看下面的代码。在此之前,我们应该将
@IntRowCount
变量作为Read/Write
传递给脚本任务,如下所示
我的整体套餐看起来像
脚本任务编辑器:
代码:
希望这有帮助 感谢您的回复:但是任务在第一次执行后停止,即使计数不是零。如何继续暂停并执行,直到计数等于零?您是否按照上述方式编辑了代码?我们需要在脚本任务中将IntRowCount设置回0以使其正常工作。它对我有效。是的,我假设我也在更改for循环中的变量,对吗?表中的行数[由SQL execute Task调用]?没有设置编号,表可以包含任意数量的行/记录。它可以是1000或500或任何东西。
public void Main()
{
double sec = Convert.ToDouble(Dts.Variables["IntPauseExecution"].Value);
int ms = Convert.ToInt32(sec * 1000);
System.Threading.Thread.Sleep(ms);
Dts.TaskResult = (int)ScriptResults.Success;
}
public void Main()
{
// TODO: Add your code here
int sec = int.Parse(Dts.Variables["Timer"].Value.ToString());
int row = Convert.ToInt32(Dts.Variables["IntRowCount"].Value.ToString());
int ms = sec * 100;
System.Threading.Thread.Sleep(ms);
//Flag the IntRowCount variable to go out of the loop
if (row != 0)
{
Dts.Variables["IntRowCount"].Value = 0;
}
else
{
Dts.Variables["IntRowCount"].Value = 1;
}
Dts.TaskResult = (int)ScriptResults.Success;
}