Завершение работы в SQL Server во время выполнения
Есть ли способ заставить запланированное задание завершиться (остановить, выйти, прекратить выполнение, сообщить об ошибке) в рамках хранимой процедуры в этом задании?
Например, у меня есть несколько проверочных запросов в TRY
блок, который делает RAISERROR (59834,16,1)
идти в CATCH
заблокировать отправку электронного сообщения о том, что при проверке запросов обнаружена плохая ситуация и работа должна быть остановлена. Число 59834 было произвольным, но конкретным. Тем не менее, каждый раз, когда я тестирую задание, хотя я и выдал ошибку, задание продолжает выполняться; это никогда не сообщает о неудаче.
Я пытался использовать тот же RAISERROR
в CATCH
блок, как я сделал в TRY
блок, но это тоже не сработало.
Я хочу, чтобы в этом случае работа прекратилась, она будет выполняться каждый день.
1 ответ
Похоже, настройка XACT_ABORT не включена. Без включения XACT_ABORT выполнение будет продолжено независимо от обнаруженных ошибок. Дополнительная информация о XACT_ABORT:
Запись Microsoft BOL для XACT_ABORT
В чем преимущество использования SET XACT_ABORT ON в хранимой процедуре?
Так что вы могли бы рассмотреть SET XACT_ABORT ON
в начале работы.