有一个 SQL 代理作业,其中包含执行某些 ETL 作业的复杂集成服务包。运行需要 1 到 4 个小时,具体取决于我们的数据源。该作业目前每天运行,没有问题。我现在想做的是让它在一个无限循环中运行,这意味着:完成后,重新开始。
调度程序似乎没有提供此选项。我发现可以在最后一步完成后使用steps界面进入第一步,但是使用该方法有一个问题:如果我需要停止工作,我需要以强制的方式这样做. 但是,我希望能够在下一次迭代后让工作停止。我怎样才能做到这一点?
提前感谢您的帮助!
有一个 SQL 代理作业,其中包含执行某些 ETL 作业的复杂集成服务包。运行需要 1 到 4 个小时,具体取决于我们的数据源。该作业目前每天运行,没有问题。我现在想做的是让它在一个无限循环中运行,这意味着:完成后,重新开始。
调度程序似乎没有提供此选项。我发现可以在最后一步完成后使用steps界面进入第一步,但是使用该方法有一个问题:如果我需要停止工作,我需要以强制的方式这样做. 但是,我希望能够在下一次迭代后让工作停止。我怎样才能做到这一点?
提前感谢您的帮助!
由于 Martin 和 Remus 都没有创建答案,所以这里有一个答案,所以可以接受这个问题。最好的方法是简单地将运行频率设置为非常低的值,比如一分钟。如果它已经在运行,则不会创建第二个实例。如果您想在当前运行后停止作业,只需禁用计划即可。
谢谢!
所以你希望当你想停止工作时,在运行迭代之后,它应该停止 - 如果我让你正确的话。
你可以在这里做一件事。
您始终可以将“成功”操作设置为转到第一步,从而创建一个无限循环,但是正如您所说,如果您想停止工作,则必须强制执行。
除此之外,数据库上有一个简单的控制表,其中包含状态和第二个作业,该作业查询该表并根据状态触发您的主要作业。这里有许多可能的架构,只需选择更适合您的架构
您可以在数据库中使用服务代理。您需要运行的作业可以通过排队“开始”消息来启动,当它完成时,它可以向自己发送一条消息以重新开始。
要暂停进程,您只需停用队列处理器。