gpt4 book ai didi

sql-server - SQL Server 代理作业超时

转载 作者:行者123 更新时间:2023-12-04 11:15:58 26 4
gpt4 key购买 nike

我刚刚让一个预定的 SQL Server 作业运行的时间比正常时间长,我真的可以设置超时以在一定时间后停止它。

我可能对此有点盲目,但我似乎找不到设置工作超时的方法。有谁知道如何做到这一点?

谢谢

最佳答案

作为夜间作业处理子系统的一部分,我们做一些类似于下面的代码——它实际上比这更复杂;例如,我们正在处理多个相互依赖的作业集,并从配置表中读取作业名称和超时值 - 但这捕获了这个想法:

    DECLARE @JobToRun NVARCHAR(128) = 'My Agent Job'
DECLARE @dtStart DATETIME = GETDATE(), @dtCurr DATETIME
DECLARE @ExecutionStatus INT, @LastRunOutcome INT, @MaxTimeExceeded BIT = 0
DECLARE @TimeoutMinutes INT = 180

EXEC msdb.dbo.sp_start_job @JobToRun
SET @dtCurr = GETDATE()
WHILE 1=1
BEGIN
WAITFOR DELAY '00:00:10'
SELECT @ExecutionStatus=current_execution_status, @LastRunOutcome=last_run_outcome
FROM OPENQUERY(LocalServer, 'set fmtonly off; exec msdb.dbo.sp_help_job') where [name] = @JobToRun
IF @ExecutionStatus <> 4
BEGIN -- job is running or finishing (not idle)
SET @dtCurr=GETDATE()
IF DATEDIFF(mi, @dtStart, @dtCurr) > @TimeoutMinutes
BEGIN
EXEC msdb.dbo.sp_stop_job @job_name=@JobToRun
-- could log info, raise error, send email etc here
END
ELSE
BEGIN
CONTINUE
END
END
IF @LastRunOutcome = 1 -- the job just finished with success flag
BEGIN
-- job succeeded, do whatever is needed here
print 'job succeeded'
END

END

关于sql-server - SQL Server 代理作业超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1588599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com