Это что-то, что действительно недостаточно для углубленного изучения инфраструктуры. 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;
}
}
Как видите, написать более простой код довольно сложно. Мой вопрос касается обработчика событий для этой задачи сценария.
Я пробовал следующее:
- Добавление обработчика события
OnTaskFailed
к задаче сценария - Добавление обработчика событий
OnError
к задаче сценария
Результат был следующим:
Обработчик событий не запускается, это означает, что результат задачи возвращен Dts.TaskResult = (int)ScriptResults.Failure;
не влияет на пакет.
Обработчик события выполняет запуск, это означает, что результат задачи, возвращаемый Dts.TaskResult = (int)ScriptResults.Failure;
, захватывается обработчиком события.
Я бы ожидал наоборот. Кто-нибудь может объяснить, почему это так? Для меня OnError
- более общий c результат, и я не хотел бы, чтобы мой обработчик событий срабатывал при каждой отдельной ошибке (например, необработанные исключения).
Надеюсь, что это имеет смысл