从 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?
有什么建议或有更好的方法吗
感谢和我一起思考!
您可以在 PackageA
和 PackageB
之间实施 T-SQL 作业步骤或在 SSIS 中执行 SQL 任务以检查时间并使用 WAITFOR 语句等到 19:00.
IF DATEPART(HOUR, SYSDATETIME()) >= 6 OR DATEPART(HOUR, SYSDATETIME()) < 18
BEGIN
WAITFOR TIME '19:00';
END;
我有一个 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?
有什么建议或有更好的方法吗感谢和我一起思考!
您可以在 PackageA
和 PackageB
之间实施 T-SQL 作业步骤或在 SSIS 中执行 SQL 任务以检查时间并使用 WAITFOR 语句等到 19:00.
IF DATEPART(HOUR, SYSDATETIME()) >= 6 OR DATEPART(HOUR, SYSDATETIME()) < 18
BEGIN
WAITFOR TIME '19:00';
END;