У меня есть ежедневное запланированное задание SQL в SSMS, состоящее из нескольких шагов. Если какой-либо из этих шагов завершится неудачей, я хочу отключить задание, чтобы предотвратить запуск запланированного задания на следующий день.
В настоящее время у меня это работает, установив шаг 1 для проверки значения в управляющей таблице и продолжая только в том случае, если значение равно 1. Затем в случае неудачи любого из следующих шагов перейдите к шагу 10, который представляет собой сценарий T-SQL, который обновляет значение. в этой таблице до 0
Хотя это действительно работает, я думаю, что полное отключение этой работы кажется более чистым. Есть ли способ сделать это?





Создайте в задании шаг, который отключает задание (вероятно, последний или первый), используя sp_update_job, а затем попросите другие шаги выполнить этот шаг в случае неудачи (и перейти к следующему шагу в случае успеха). Вы также, вероятно, захотите, чтобы ваш шаг отключения сообщал об ошибке после его успешного выполнения. Просто убедитесь, что задание либо начинается с шага 2, либо предпоследний шаг завершает задание в случае успеха.
На своем этапе после сбоя задания вы можете запустить это, чтобы отключить задание:
EXEC dbo.sp_update_job
@job_name = 'JobNameHere',
@enabled = 0 ;
Затем вы можете запустить часть отправки почты, чтобы отправить электронное письмо о том, что это не удалось.
EXEC msdb.dbo.sp_send_dbmail
@recipients = '',
@subject = '',
@body = ''