Задача файловой системы SSIS завершается с ошибкой

Я создаю простой проект служб Integration Services, который считывает «ожидающий» каталог CSV-файлов, загружает каждый из них в промежуточную таблицу и перемещает файл в «завершенный» или «неудачный» каталог в зависимости от того, был ли он загружен успешно или нет. . Расположение «выполненных» и «неудачных» каталогов задается в параметрах проекта.

Проблема в том, что задача «переместить в каталог с ошибкой» никогда не выполняется, хотя все задачи, предшествующие ей, выполняются успешно. Разочаровывает то, что сообщение об ошибке не выдается. Я попытался установить точку останова в обработчиках событий задачи, но точки останова никогда не срабатывали. Как будто задачи вообще нет (я проверил, что свойство Disabled не было случайно установлено для задачи, но это не так).

Это странно, потому что задача «переместить в завершенное» работает нормально, и обе задачи идентичны, за исключением каталога, в который они записываются. Оба каталога существуют и имеют одинаковые права доступа, хотя я полагаю, что если бы это была проблема с разрешениями, произошла бы какая-то ошибка.

поток SSIS

На диаграмме выше не работает задача MoveToFailed справа. Доступ к нему можно получить несколькими способами: дублирующийся файл или неизвестный файл, или файл, содержащий недопустимые записи. Задача не выполняется независимо от того, как она вызывается.


person Ken Keenan    schedule 11.06.2013    source источник
comment
Можете ли вы сделать скриншот потока управления?   -  person billinkc    schedule 11.06.2013
comment
Превосходно. Итак, когда происходят эти плохие вещи, заканчивается ли пакет ошибкой или это логические ошибки, и поэтому пакет должен что-то делать? Я вижу выражение в GetValidInvalidRecordCount, которое заставляет меня думать, что путь является логической ошибкой. Но MarkInvalidFile и другая задача скрипта выглядят так, как будто они ограничены только успехом.   -  person billinkc    schedule 11.06.2013
comment
@billinkc: Нет, ошибки нет вообще; это безумие. Если, например, я помещаю файл с повторяющимся именем в каталог ожидания и запускаю пакет в Visual Studio, рядом с задачами GetBatchNumber и MarkDuplicate появляются зеленые галочки, но рядом с MoveToFailed не появляется метка (зеленая или красная), а окно вывода сообщит, что пакет успешно запущен. Как я уже сказал, это похоже на то, что задачи просто нет!   -  person Ken Keenan    schedule 11.06.2013
comment
Если вы поместите туда дубликат файла и перенаправите прецедентное ограничение с GetBatchNumber непосредственно на MoveToFailed, будет ли перемещен файл?   -  person billinkc    schedule 11.06.2013


Ответы (1)


Вам нужно изменить ограничения приоритета на MoveToFailed, чтобы они находились в режиме «Логическое ИЛИ».
Выберите одно из ограничений в этом компоненте и щелкните правой кнопкой мыши, выберите «Редактировать». Внизу есть переключатель. с пометкой «Логическое ИЛИ». Одно ограничение должно оцениваться как True'.

person Brian O''Byrne    schedule 11.06.2013
comment
MarkDuplicate успешно завершается и не имеет Expression для предшествующего ограничения. Им нечего делать с этим ограничением. Вы по-другому читаете? - person billinkc; 11.06.2013
comment
То, как вы написали, все три ограничения приоритета, ведущие к этой задаче, должны быть истинными, прежде чем задача будет выполнена. Если вы измените его, как я объяснил, задача будет выполняться, когда любое из ограничений приоритета истинно. - person Brian O''Byrne; 11.06.2013
comment
Да, это был приоритет ограничений. Ошибка новичка с моей стороны; наиболее знакомый мне инструмент ETL/EAI запускает задачу при любом вводе (ИЛИ). - person Ken Keenan; 12.06.2013