Это то, что действительно связано с довольно продвинутым знанием .NET framework, но я не смог найти нужную мне информацию.
У меня есть пакет 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
является более общим результатом, и я бы не хотел, чтобы мой обработчик событий срабатывал при каждой отдельной ошибке (например, при необработанных исключениях).
Надеюсь, это имеет смысл
this.Dts.{whatever}
. Ознакомьтесь с моим вопросом и ответом здесь: stackoverflow.com/questions/51753727/ - person digital.aaron   schedule 21.01.2020