簡體   English   中英

SQL Server代理作業依賴性

[英]SQL Server Agent job dependency

我們有一個4小時數據倉庫作業,該作業按4小時時間表每4小時運行一次。 我們希望創建一個新的“每日”時間表,並使某些過程用完幾個小時。

但是,如果當日常作業開始運行並且4h作業仍在運行時,我希望它等待4h作業完成,然后運行(或具有指定的持續時間)。 我還沒有決定最好的...

這怎么可能? 謝謝!

請不要建議第三方選項,因為我無法控制基礎結構。

請在一張表中保留所有作業詳細信息,包括作業狀態(即進行中,已完成)。 當執行日常工作時,您必須檢查成功完成的第四項工作,然后開始您的日常工作,並在完成第四項工作后觸發您的日常工作。

create TABLE [dbo].[tblDailyJob](
    [JobId] [int] NOT NULL,
    [JobDesc] [varchar](500) NOT NULL,
    [JobStartTime] [datetime] NULL,
    [JobEndTime] [datetime] NULL,
    [JobStatus] [int] NOT NULL,
 CONSTRAINT [PK_tblDailyJob] PRIMARY KEY CLUSTERED 
(
    [JobId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

ALTER TABLE [dbo].[tblDailyJob] ADD  CONSTRAINT [DF_tblDailyJob_JobStatus]  DEFAULT ((0)) FOR [JobStatus]
GO

作業狀態-0尚未開始,1進行中,2完成,3失敗

insert into tblDailyJob values(1,'1st Job',null,null,0)
insert into tblDailyJob values(2,'2nd Job',null,null,0)
insert into tblDailyJob values(3,'3rd Job',null,null,0)
insert into tblDailyJob values(4,'4th Job',null,null,0)
insert into tblDailyJob values(5,'Daily Job',null,null,0)

設置執行工作之前的開始時間以及完成工作之后的結束時間和工作狀態

完成第四項工作后觸發您的日常工作,或者如果您手動觸發它,則檢查第四項工作是否完成

您也可以使用相同的任務計划。

看一下sp_getapplock。 本質上,您可以創建自己的鎖,以遵守所有常規SQL Server鎖語義。 對於您的情況,您可以說“等到我獲得此鎖后再繼續”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM