【问题标题】:Execute SQL Server Agent job/package based on status of other packages根据其他包的状态执行 SQL Server 代理作业/包
【发布时间】:2014-09-25 18:08:43
【问题描述】:

我是 SSIS 的新手,我想自动化我的一些工作流程。但是,我的大多数任务要求 SQL Server 作业代理中的其他作业/包之前已由其他团队成员在一天/一周内运行。我的问题是:如何根据这些其他包的状态来指导我的工作流程?控制流没有条件拆分工具,我无法从数据流中启动单独的作业/包。我可以轻松地编写一条 SQL 语句来确定是否已运行任何或所有相关包,甚至在需要时让它返回一个布尔值,但我不知道如何使这直接工作流继续进行到下一步,或者如果其他包还没有运行,则整个包都失败(期望的结果)。

我非常感谢在这方面的任何帮助。谢谢!

【问题讨论】:

    标签: sql-server-2008 ssis package sql-agent-job


    【解决方案1】:

    在 SSIS 中:

    您可以通过双击将一项任务链接到另一项任务的箭头来设置控制流中的条件。如果您设置一个执行 SQL 任务来运行查询以检查包是否已运行,然后将结果返回到变量中,那么您可以设置一个条件来检查该变量,并且只有在它运行时才继续执行下一个任务(或不是)某个值。

    这是一个示例,说明如何设置优先约束,以便仅在上一步成功且特定变量的值不为 C 时才会执行下一步:

    在 SQL Server 代理中:

    如果您想避免运行整个程序包,您也可以改为在 SQL Server 代理作业中进行设置。您可以添加一个初始步骤来检查包的状态,然后退出报告成功的作业。这确实意味着如果该步骤由于其他原因而失败(例如,它尝试运行 select 语句的数据库已关闭),它仍会退出并报告成功,所以要小心 - 您可能需要先设置一些其他特定步骤检查这种情况。

    这是我不久前使用的一篇文章,当时我想了解如何以这种方式设置 SQL Server 代理作业: http://sqlactions.com/2012/08/05/how-to-create-custom-schedule-for-sql-server-agent-job/

    【讨论】:

    • 感谢您的意见!不过,我确实必须为工作流程的其余部分创建一个包,检查其他作业的状态只是第一步,所以我不妨在同一个包中完成所有工作。我也明白我可以调整约束,但我不知道如何 调整它以检查包。它会是一个表达式吗?如果是,那会是什么样子?
    • 我已经编辑了帖子以包含带有示例的屏幕截图,希望对您有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多