2017-02-16 4 views
0

Это связано с задачей потока данных в SSIS.Обработка ошибок заголовка и подробных записей в ssis

Я разработал DFT для обработки оборванного плоского файла с заголовками и подробными записями.

2 разных таблицы для хранения заголовка (Invoice_header) и записи подробностей (Invoice_lines). Эти две таблицы связаны с отношением внешнего ключа, а первичные ключи - от записи заголовка.

Все работают отлично с задачей сценария, и есть 2 потока записей, один для заголовка и другой для деталей. Запись заголовка сначала обрабатывается и загружается в таблицу Invoice_header, а затем таблица Invoice_line обновляется с подробной записью. Теперь проблема заключается в нарушении первичного ключа в таблице Invoice_header, обработка прекращается для записи заголовка, но подробные записи загружаются успешно, что не ожидается.

Мое требование состоит в том, чтобы остановить всю обработку, когда есть какая-либо проблема при обновлении записи заголовка, которая имеет нарушение первичного ключа или любую проблему в этом отношении.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

+0

** Формат файла: ** ---------------- HDR; SJCSYD; 5999920; ACWFNTFLT; 08/02/2017; AUD; 112483,26; 0; 0; 2020700242; SND; DT; 356,13; 2020700242; SND; TL; 194,00; 2020700489; SND; DT; 5503,35; 2020700489; SND; TL; 194,00; HDR; SJCSYD; 5999920; ACWFNTFPJ; 08/02/2017; AUD; 1242,20; 0; 0; 6220704503; SND; TL; 83,00; 6220704920; SND; TL; 185,00; 6420700758; SND; TL; 185,00; 6420700761; SND; TL; 83,00; ** DFT: ** ------ Источник плоского файла -> Задача сценария -> Назначение ole 1 для записи заголовка -> старый пункт назначения 2 для подробной записи. – Mohi

ответ

0

Управляющий поток позволяет precedent constraints. Прецедентные ограничения позволяют вам делать все по шагам. В потоке данных нет, он начнет все сразу.

Итак, вместо одного потока данных с двумя адресатами используйте два потока данных с одним адресом назначения.

enter image description here

выше, верхний поток данных загружает заголовок. Нижний поток данных загружает строки подробностей. Если верхний поток данных выходит из строя, нижний поток данных не запускается. Это решает вашу проблему.

Теперь проблема заключается в нарушении первичного ключа в таблице Invoice_header, обработка прекращается для записи заголовка, но подробные записи загружаются успешно, что не ожидается.

Если задача потока данных 1 (заголовок) не удалась, тогда задача 2 потока данных (подробности) не запускается.

Надеюсь, это поможет.

+0

Спасибо Трой за ваш ответ. В настоящее время у меня есть одна задача скрипта, которая имеет 2 потока вывода. Один для заголовка, а другой для деталей. Вы имеете в виду, что у меня есть 2 скриптовых задания, по одному для заголовка и деталей. Таким образом, он не сможет обработать детали, если возникнет проблема с обработкой записи заголовка. Обратите внимание, что мне также нужны поля из заголовка, чтобы заполнить таблицу подробных записей. Могу ли я обработать его как-то в одной задаче скрипта? – Mohi

+0

Да. Используйте две задачи сценария. Один для заголовка и один для деталей. Поместите задачу каждого сценария в отдельные задачи потока данных. –

+0

Звучит как идея. Я попробую и дам вам знать. Еще раз Большое спасибо за ваш ответ Трой! – Mohi

Смежные вопросы