背景:
有些存储过程是可以通过步骤来实现依赖,但有些需要实现作业与作业间的依赖,可以将前置依赖的最后一个步骤的处理信息结果保存,后置依赖的第一个步骤根据前置信息来判断是否执行,实现依赖关系

主要步骤
1、创建记录表
2、前置依赖表完成该任务后插入记录表
3、后置依赖表根据记录表的信息,判断是等待还是执行


-- 1.创建任务记录表
CREATE TABLE [dbo].[temp_depend](
    [dateday] [date] NULL,
    [project] [varchar](10) NULL,
    [item] [varchar](100) NULL,
    [createtime] [datetime] NULL
) ON [PRIMARY]


-- 2.模拟前置依赖表完成该任务后插入记录表
insert into temp_depend
(
dateday,
project,
createtime
)
select cast(getdate() as date) dateday,'ODS' project,getdate() createtime



-- 3.后置依赖表根据记录表的信息,判断ODS层任务是等待还是执行
delete from temp_depend where dateday=cast(getdate() as date) and project='DW' and item='Usp_Updae_User'

-- 执行依赖
while not exists(select 1 from temp_depend where dateday=cast(getdate() as date) and project='DW' and item='Usp_Updae_User') -- 依赖的数据未处理一直循环
begin

if exists(select 1 from temp_depend where dateday=cast(getdate() as date) and project='ODS') -- 前置依赖ODS层数据已处理完,才执行DW层
begin

-- 执行存储过程
exec Usp_Updae_User

-- 写入记录表
insert into temp_depend(dateday,project,item,createtime)
select cast(getdate() as date) dateday,'DW' project,'Usp_Updae_User' item,getdate() createtime
end

else
waitfor delay '00:01:00'  -- 延时等待1分钟再次尝试执行

end

 



posted on 2021-12-30 16:13  一粒星海  阅读(193)  评论(0编辑  收藏  举报