题
这是我的场景 - 我有一个 SSIS 作业,它依赖于另一个先前的 SSIS 作业来运行。在开始第二个工作之前,我需要能够检查第一个工作的状态。将第二个作业添加到第一个作业的工作流程中是不可行的,因为它已经太复杂了。我希望能够从第二个作业中检查第一个作业的状态(失败、成功、当前正在执行),并以此作为条件来决定第二个作业是否应该运行或等待重试。我知道这可以通过查询运行该作业的 SQL Server 上的 MSDB 数据库来完成。我想知道是否有更简单的方法,例如可能使用 WMI 数据读取器任务?有人有过这样的经历吗?
解决方案
您可能想要创建第三个包,先运行 packageA,然后运行 packageB。第三个包仅包含两个执行包任务。
http://msdn.microsoft.com/en-us/library/ms137609.aspx
@craig是一个状态表,但您必须继续监视它。
这是一篇关于 SSIS 事件的文章,可以解答您的原始问题。
http://www.databasejournal.com/features/mssql/article.php/3558006
其他提示
为什么不使用桌子呢?只需让第一个作业用其状态更新表即可。第二个作业可以使用该表来检查状态。如果我正确地阅读了问题,那应该可以解决问题。该表(应该)只有一行,因此不会影响性能,也不应该导致任何死锁(当然,既然我写了它,它就会发生):)
@杰森:是的,您可以监视它,或者可以在收到最终状态时让触发器启动第二项作业。:)
不隶属于 StackOverflow