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