Sql-Server

在相關條件滿足一次後,如何停止工作一天的剩餘時間?

  • February 14, 2019

我有一項工作每 5 分鐘執行一次以檢查 IF 條件。如果條件為真,它會發送一封電子郵件,如果不是,它不會做任何事情。

我的問題是,一旦 IF 條件為真,它將保持一整天,並且由於作業每 5 分鐘執行一次,它會在每 5 分鐘後繼續發送電子郵件。

電子郵件發送一次後,我需要整天停止工作。有沒有辦法這樣做?

我實際上在 mssqltips.com 上寫了一個類似的提示。對於您目前的情況,一般的想法是這樣的:

  1. 您可以在作業結束時添加額外的步驟,一旦您的主要作業步驟成功,作業將執行最後一步(即新添加的步驟)
  2. 如果您的作業在主要步驟中失敗,您的作業將退出,無需執行最後添加的步驟。
  3. 在您最後的工作步驟中,您將做一件事,即將您的工作計劃的開始日期更新為第二天。
use msdb

declare @active_date int, @sch_name varchar(128);

select @sch_name=s.name
from msdb.dbo.sysschedules s
inner join msdb.dbo.sysjobschedules js
on js.schedule_id = s.schedule_id
and js.job_id = $(ESCAPE_NONE(JOBID));

set @active_date = cast(replace(cast(cast(getdate()+1 as date) as varchar(10)), '-', '') as int);

exec sp_update_schedule @name=@sch_name, @active_start_date= @active_date;

當然,我假設你的工作只有一個專門的時間表。該方法是完全獨立的,您不需要任何額外的外部工作來管理您目前的工作。

引用自:https://dba.stackexchange.com/questions/229664