Я думаю, что есть путаница в том, как на самом деле работает работа.
Когда вы вызываете задание, оно будет выполнено полностью, как оно существует в тот момент, когда вы его называете. Если вы внесете изменения в задание в ходе выполнения, они не будут выполнены до следующего запуска задания (вы можете легко проверить это, добавив шаг sp_delete_job, чтобы удалить задание на ранней стадии, и вы увидите, что задание продолжит выполнение следующих шагов, даже если он был удален).
Итак, когда вы изначально вызываете задание, оно выполнит именно то, что у вас есть:
- Шаг 1: создайте новый шаг 2
- Шаг 2: сгенерировать ошибку
Вот почему вы не можете обойти свой первоначальный второй шаг, добавив новый шаг, чтобы попытаться обойти его. Что касается SQL Server, новый шаг для этого выполнения не существует.
Что касается путаницы с именами - история заданий не записывается до тех пор, пока процесс не будет завершен, и она регистрирует информацию, используя INT step_id, а не уникальный идентификатор для шага, поэтому вы видите новое имя шага при просмотре история, даже если основная логика, которая была выполнена, взята из вашего первоначального шага 2. Вероятно, следует обратиться к MS, чтобы переключиться на использование UID, чтобы избежать этих случаев.