从 SSIS 包中安排单个包

Schedule single package from within SSIS package

我有一个 SQL 作业代理,它有两个作业步骤:PackageA 和 PackageB。 PackageB 在 PackageA 之后,但 PackageB 不应在 06:00 和 18:00 之间 运行。 不幸的是,PackageA 有时会花费很长时间,导致 PackageB 在 6:00 和 18:00 之间 运行。 在 PackageB 中,我有一个约束表达式,用于检查时间是否在 06:00 和 18:00 之间。如果是这样,PackageB 会很好地退出并向操作员发送一封电子邮件,提醒 him/her 重新安排 PackageB。 但是,如果我可以让包裹自行重新安排,情况会好得多。

PackageB 中的逻辑:

ExpressionTask --> fills variable @Hour with datepart("Hh",GETDATE())

如果找到的值小于 6 或 >18,则执行 'normal' 过程或启动 'send email' 并退出。 我想要的是在发送电子邮件后添加一个命令,该命令将在当天晚上 19:00 将 PackageB 安排到 运行。理想情况下,该过程将检查是否只有 运行ning packageB 的工作,并在当晚 19:00 将其安排到 运行 一次,如果不存在 应该创建 运行ning PackageB 的作业。

我的感觉是使用 TSQL 应该可以做到这一点。除了使用 TSQL?

有什么建议或有更好的方法吗

感谢和我一起思考!

您可以在 PackageAPackageB 之间实施 T-SQL 作业步骤或在 SSIS 中执行 SQL 任务以检查时间并使用 WAITFOR 语句等到 19:00.

IF DATEPART(HOUR, SYSDATETIME()) >= 6 OR DATEPART(HOUR, SYSDATETIME()) < 18
BEGIN
    WAITFOR TIME '19:00';  
END;