SSIS ScriptTask Обработчик события OnTaskFailed не захватывает результат ScriptResults.Failure - PullRequest
0 голосов
/ 20 января 2020

Это что-то, что действительно недостаточно для углубленного изучения инфраструктуры. NET, но я не смог найти необходимую информацию.

У меня есть пакет служб SSIS, который выполняет ScriptTask , Внутри этой ScriptTask ниже приведен простой код:

public void Main()
    {
        // TODO: Add your code here
        var fileName = (string)Dts.Variables["User::FileName"].Value;            
        DialogResult result = MessageBox.Show($"Do you want to fail the task", "Select what to do" , MessageBoxButtons.YesNo);

        if (result == DialogResult.Yes)
        {
            Dts.TaskResult = (int)ScriptResults.Failure;
        } else
        {
            Dts.TaskResult = (int)ScriptResults.Success;
        }
    }

Как видите, написать более простой код довольно сложно. Мой вопрос касается обработчика событий для этой задачи сценария.

Я пробовал следующее:

  1. Добавление обработчика события OnTaskFailed к задаче сценария
  2. Добавление обработчика событий OnError к задаче сценария

Результат был следующим:

  1. Обработчик событий не запускается, это означает, что результат задачи возвращен Dts.TaskResult = (int)ScriptResults.Failure; не влияет на пакет.

  2. Обработчик события выполняет запуск, это означает, что результат задачи, возвращаемый Dts.TaskResult = (int)ScriptResults.Failure;, захватывается обработчиком события.

Я бы ожидал наоборот. Кто-нибудь может объяснить, почему это так? Для меня OnError - более общий c результат, и я не хотел бы, чтобы мой обработчик событий срабатывал при каждой отдельной ошибке (например, необработанные исключения).

Надеюсь, что это имеет смысл

...