调度由数据加载触发的sql作业

时间:2011-11-23 13:55:03

标签: sql-server-2005 jobs

我有一个Sql Server 2005数据库,其中一些数据将每天从外部系统(Oracle)刷新。具体来说,每天都会加载几个表,我需要安排一个作业只在最后一个表刷新后启动。我怎样才能做到这一点?我应该使用一个表来存储有关数据加载的特定信息并定期读取,作为sql job的第一步吗?谢谢!

2 个答案:

答案 0 :(得分:0)

外部数据库做的最后一件事是更新当前运行。当你的工作完成时,它设置了最后一次运行=当前运行。当你的工作开始时(让它检查状态,如果两者没有区别,请在X期间尝试agian;然后失败,如果不同,那么你的工作就会运行。

答案 1 :(得分:0)

您需要了解外部系统已完成数据更新的机制。

猜测SQL Server中的一些表(例如SYNC_TBL)是外部系统插入或更新某些记录以通过外部系统通知更新结束。

如果您需要:

  • 一旦更新完成就开始工作 - 将触发器放在SYNC_TBL表上并使用sp_start_job执行作业。
  • 在完成更新后的某个时间开始工作 - 安排工作每15分钟运行一次并在第一步检查SYNC_TBL以查看您的工作是否应该继续

请注意,您需要对外部系统端进行另一次检查:在作业完成执行之前,更新数据可能不应再次启动。您可以在SYNC_TBL中使用Processed BIT列来标记数据是否由您的作业处理。