Как сделать так, чтобы на шаге агента SQL Server не выполнялось задание
У меня есть процесс, и первый шаг - проверить состояние другого процесса. Если другой процесс завершен, я бы хотел выполнить остальные шаги, а если нет, я бы хотел выйти из работы.
У меня есть таблица, которая проверяет статус и, если все сделано, она помечается как "выполнено". Итак, что я должен сделать на первом шаге, чтобы, когда статус не "завершен", был сбой шага 1?
3 ответа
Существует множество способов заставить sql-сервер выдать (или вызвать) ошибку, но я бы порекомендовал использовать THROW для SQL-Server 2012 + или RAISERROR ниже, так как это является вашим реальным намерением. Таким образом, вы можете сделать что-то вроде:
IF EXISTS(SELECT * FROM StatusTable WHERE status <> 'done')
BEGIN
;THROW 51000, 'Process Is Not Finished', 1
END
Вы также можете использовать "Выбрать 1/0", это будет анализировать, но будет давать ошибку при выполнении
Я считаю, что это плохая практика - не выполнить шаг задания для реализации логики приложения. Лучше использовать IF (какое-то условие) THEN (какое-то действие шага задания) ELSE (распечатать объяснение, почему не было действия шага задания). А сбои приберегите для оперативных вопросов.