Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SSIS:如何基于变量求值暂停任务并重新开始执行_C#_Ssis - Fatal编程技术网

C# SSIS:如何基于变量求值暂停任务并重新开始执行

C# SSIS:如何基于变量求值暂停任务并重新开始执行,c#,ssis,C#,Ssis,我被困在这个问题上: 我使用For循环任务计算一个变量,该变量包含表中记录/行计数的值 只要变量大于零,我就需要让循环继续执行下面的任务 步骤如下: 如果值大于0,则计算变量运行任务 暂停任务X秒,如果变量仍然较大,则重新计算变量 然后再次运行任务,再次暂停 继续暂停并运行,直到变量的计算结果为零,然后退出循环 这就是我所拥有的,但它只是一个草图: 步骤1:对于循环容器: 步骤2:脚本任务: 代码: 步骤3:获取记录计数: 最后,获取计数的结果集: 我在代码部分进行了修改。请看下面的代码

我被困在这个问题上:

我使用
For循环任务
计算一个变量,该变量包含表中
记录/行计数
的值

只要变量大于零,我就需要让循环继续执行下面的任务

步骤如下:

  • 如果值大于0,则计算变量运行任务
  • 暂停任务X秒,如果变量仍然较大,则重新计算变量 然后再次运行任务,再次暂停
  • 继续暂停并运行,直到变量的计算结果为零,然后退出循环
  • 这就是我所拥有的,但它只是一个草图:

    步骤1:对于循环容器:

    步骤2:脚本任务:

    代码:

    步骤3:获取记录计数:

    最后,获取计数的结果集:


    我在代码部分进行了修改。请看下面的代码。在此之前,我们应该将
    @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;
        }