运行SQL Server作业直到成功

问题描述:

我有一个运行了近2年的SQL Server作业。运行SQL Server作业直到成功

它连接到一个不断断开连接的不良Oracle数据库,它总是因此而失败。当我在10或15分钟后再次运行它时,它可以成功运行。我越来越厌倦检查它每天的...

有没有一种方法,使作业运行连接到Oracle数据源,直到成功,或者看起来在这个作业状态高就,如果它失败了,那么它再次运行,直到它成功?

+0

尝试排除连接故障。如果您想尝试一次又一次地调用作业以获得成功,则可以相应地配置重试尝试。 – TharunRaja

+0

我会尝试修复连接不良的问题。没有必要这样做。任何其他解决方案只是一个黑客和一个贴纸。 – ADyson

+0

您可以设置该步骤的重试次数和重试间隔时间,请参阅此处的更多信息:https://docs.microsoft.com/en-us/sql/ssms/agent/job-step-properties-new-job-step-advanced -页 – sepupic

我们使用的解决方案是这样的:

总结你的Oracle查询中的SSIS包,并且查询后,有包更新,保持或者是执行的历史,或者只是一个SQL表跟踪上次作业成功运行的单行。简而言之,如果Oracle查询成功,那么在表中放入一些表示查询今天成功运行的内容。如果不成功,那么今天不要在桌子上放任何东西。

然后在包的开始处,在Oracle查询之前,检查查询是否今天已成功运行查询。如果它已经成功运行,则不执行任何操作并退出软件包。如果它今天没有成功运行,那么请按照上述后查询步骤尝试运行它。如果您有任何其他关于程序包何时运行的条件(例如“仅在上午10点之后”或其他类似情况),则可以在此处包含该逻辑。

最后,安排工作调用包,并计划每15分钟运行一次,或者不管你喜欢多久。它会每隔15分钟尝试一次,直到成功运行,之后它会在第二天停止做任何事情。

作为奖励,您可以使用相同的软件包和作业启动您想要以相同方式处理的所有任务。您只需在历史记录/元数据表中保留有关所有这些任务的元数据。