Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
Sql server SSIS建议中的Foreach循环容器_Sql Server_Ssis_Msbi - Fatal编程技术网

Sql server SSIS建议中的Foreach循环容器

Sql server SSIS建议中的Foreach循环容器,sql-server,ssis,msbi,Sql Server,Ssis,Msbi,我的SSIS主包中的每个循环容器都有 存在“执行包任务” 在此“执行SQL Server代理作业任务”下有。(它有35个步骤) 问题: SSIS主程序包正在开始下一次迭代,但未完成“执行SQL Server代理作业任务”中的所有步骤 请建议仅在完成所有步骤后开始下一次迭代的方法 提前感谢:)我知道我一直在向SSIS问题抛出C#解决方案,但这正是我在作业运行时阻止作业/进程运行的方法 我有一个函数,它执行此检查并返回布尔值true/false。使用该结果确定是否启动作业 public st

我的SSIS主包中的每个循环容器都有 存在“执行包任务” 在此“执行SQL Server代理作业任务”下有。(它有35个步骤)

问题: SSIS主程序包正在开始下一次迭代,但未完成“执行SQL Server代理作业任务”中的所有步骤

请建议仅在完成所有步骤后开始下一次迭代的方法

提前感谢:)

我知道我一直在向SSIS问题抛出C#解决方案,但这正是我在作业运行时阻止作业/进程运行的方法

我有一个函数,它执行此检查并返回布尔值true/false。使用该结果确定是否启动作业

    public static bool isDatabaseUpdating()
    {
        List<string> jobs = new List<string>();

        jobs.Add("[Insert name of Job here]");
        jobs.Add("[Insert another job and so on here]");

        string sql = "exec msdb.dbo.sp_help_job @execution_status = 1";

        using (OleDbConnection conn = new OleDbConnection(cstr))
        {
            using (OleDbCommand cmd = new OleDbCommand(sql, conn))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Connection.Open();
                OleDbDataReader rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    if (jobs.Contains(rdr["name"].ToString())) return true;
                }
            }
        }

        return false;
    }
然后在控制流中适当地设置路径上的表达式

理解此函数的真正关键是SQL

exec msdb.dbo.sp_help_job @execution_status = 1
返回当前正在运行的作业的数据集

应用程序的增强功能

这是您的控制流的外观:


执行SQL Server代理作业任务将简单地启动作业;它不会等待它完成。它正在开始下一个迭代,因为任务已经完成了,你让它去做,开始工作。如果需要等待作业完成,则需要某种“池”过程。
exec msdb.dbo.sp_help_job @execution_status = 1