【问题标题】:SSIS Package, execute every 13 hours for previous 12 hours of dataSSIS 包,前 12 小时数据每 13 小时执行一次
【发布时间】:2018-11-16 09:43:47
【问题描述】:

我有一个 SSIS 包,我需要安排它每天在 1:00 AM1:00 PM 运行。

1:00 AM 它应该传递前一天的参数,例如 15 Nov 2018 12:00 PM 作为@StartDate & 15 Nov 2018 11:59 PM 作为@EndDate

1:00 PM 它应该传递当天的参数,例如 15 Nov 12:00 AM 作为@StartDate & 15 Nov 11:59 AM 作为@EndDate

通过数据流中的 OLE DB 源代码编辑器任务调用存储过程。

是否有人对我如何实现这一点有任何建议,并指出如果作业在1:00 PM 失败并且它应该在2:00 PM 重新运行,它仍然应该传递相同的参数。

【问题讨论】:

  • 您可能需要重新考虑您的 StartDate 和 EndDate 窗口。 15 Nov 12:00 PM15 Nov 11:59 AM 之后一分钟。在1:00 PM,如果您运行“当前日期”,您将尝试查看尚未发生的 11 个小时(您的结束日期 15 Nov 11:59 PM 是运行时间之后的 10:59)。
  • 如果“今天”是15 Nov 2018,那么在凌晨1:00,您可能应该设置@StartDate = '14 Nov 2018 12:00 PM'@EndDate = '14 Nov 2018 11:59 PM'。然后在下午 1:00 设置 @StartDate = '15 Nov 2018 12:00 AM'@EndDate = '15 Nov 2018 11:59 AM'
  • 是的,完全正确@digital.aaron。干杯。
  • 如果您希望作业始终从正确的位置提取,那么您需要将其记录在表中并允许作业在下次运行时使用该表。然后,您不必在任何地方硬编码日期和时间。您可以随时随地安排它,无论您想要多频繁,它都可以正常工作。
  • 正是@Nick.McDermaid,好点子,如果您想将此作为答案发布,我会接受。

标签: sql-server tsql ssis dataflow


【解决方案1】:

以下是将日期参数传递给 OLEDB 任务的步骤。

  1. 有开始日期和结束日期参数(我想你必须有)。
  2. 使用 SQL 任务将日期值分配给两个参数。
  3. 将这些参数传递给 OLDEB 存储过程到数据流任务。

对于调度:

为每次运行创建两个不同的作业,一个用于凌晨 1 点,另一个用于凌晨 2 点。

对于第二次作业运行,请执行以下步骤。

  1. 创建一个记录作业执行状态的表,其中包含日期和时间。该表在每次运行作业后都有插入。

  2. 当第二个作业计划在第一步执行第一个检查日志表并检查作业的最后运行状态时。

  3. 如果成功退出,则进入下一步。

希望这会有所帮助。

【讨论】:

  • 您好 Rahul,感谢您的回复,但这并没有什么意义,需要更多细节。工作时间是凌晨 1 点和下午 1 点,而不是凌晨 1 点和凌晨 2 点。
猜你喜欢
  • 2017-04-09
  • 2012-03-12
  • 2019-07-31
  • 2015-08-05
  • 1970-01-01
  • 2012-09-02
  • 2020-03-05
  • 1970-01-01
  • 2016-11-07
相关资源
最近更新 更多