Пара вещей ...
Кажется, ваша переменная @JobID
должна быть параметром процедуры.Вы никогда не задаете значение этой переменной.
Во-вторых, ваш DATEDIFF(hh, StartDate, GETDATE()) > 3
, скорее всего, должен быть изменен на DATEDIFF(hh, StartDate, GETDATE()) >= 3
;как написано в настоящее время, вы не будете делать никаких обновлений, пока не будет достигнута 4-часовая отметка.
Кроме того, вы рассматривали возможность использования синтаксиса ALTER PROCEDURE
вместо проверки существования процедуры и удаления / воссоздания вкаждый пробег?
ALTER PROCEDURE proc_dc_timeout ( @JobID INT )
AS
BEGIN
UPDATE j
SET j.[LogLevel = 1,
j.[Status] = 'error'
FROM [Job] j
WHERE j.[JobID] = @JobID
AND DATEDIFF(hh, j.[StartDate], GETDATE()) >= 3
END
GO