【问题标题】:SSIS: How to automatically rerun a package after it has completed?SSIS:如何在包完成后自动重新运行包?
【发布时间】:2019-02-22 15:20:30
【问题描述】:

我需要我的包在它完成后直接再次运行。怎么做 ?我应该使用 SQL Server 代理吗?

我需要这样做,因为用户无法访问 SSIS,而只能访问 Management Studio。

我使用 WMI 事件观察器任务无限期地查找正在放置在文件夹“Drop”中的特定文件。发生这种情况时,程序包会执行,然后我使用文件系统任务将文件从文件夹中删除到另一个文件夹“Archved”。

最后,用户应该能够通过将相同的文件拖放到触发包“Drop”的文件夹中来重新运行包。

我的问题是完成后我必须点击“运行包”。我希望 ssis 自己做。

有可能吗?

已编辑:

添加 EvalExpression 1=1 的 For 循环容器时,以下两个执行 SQL 任务永远不会运行。如果没有循环,他们会这样做,但只有一次直接到最后。

【问题讨论】:

  • 这是否意味着 if 每次完成后都应该运行?所以无限期地跑,还是在第一次之后就跑了?
  • 无限期@Larnu
  • 我不明白。如果文件观察器在第一个文件出现的时候触发了包,那么当用户删除另一个文件时它不会再次触发包吗?
  • 您是否尝试过使用 For 循环容器并将其 EvalExpression 设置为 1==1?只是说...
  • 您必须将所有任务包含在 For 循环容器中,它应该可以工作。不过,这不是一个好方法。

标签: sql-server visual-studio ssis ssms


【解决方案1】:

这可以使用 SQL 代理进行设置,如下所示:

第 1 步:使用 SSMS 创建新作业:

第 2 步:添加新作业步骤以运行 SSIS 包

第 3 步:添加一个新计划以定义作业运行的间隔(调整它以满足您的要求)

在这种情况下,对于每次运行,包中的文件观察程序步骤将等待文件被删除,并在文件被删除/找到后成功运行作业。

注意:请在您的非生产环境中进行测试,以确保其按预期工作。

【讨论】:

    【解决方案2】:

    我认为最简单的方法是创建另一个包,我们称之为主包。添加两个执行相同包的Execute Package Task

    有关执行包任务的更多信息,请查看以下链接:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多