Ошибка источника плоского файла Выходное соединение в службах SSIS - PullRequest
3 голосов
/ 07 апреля 2011

У меня есть соединение с источником плоских файлов в службах SSIS.Я создал одно целевое соединение с плоским файлом для вывода ошибок.Я связал это с красной стрелкой.Проблема в том, что файл вывода ошибок создается, даже если в источнике плоских файлов нет ошибок.«Error Flat File Destination» всегда становится зеленым, даже если нет ошибок.Как это решить.Заранее спасибо

1 Ответ

12 голосов
/ 26 мая 2011

Возможно, вы уже нашли решение. Я надеюсь, что это может помочь кому-то найти решение этой проблемы.

Нет встроенной настройки задачи потока данных, доступной в SSIS для этого. Для этого можно использовать преобразование Row Count внутри задачи «Поток данных» в сочетании с File System Task в потоке управления.

Вот пошаговый процесс, как это сделать. В этом примере я использовал файл csv с именем Country_State.csv, содержащий страны и государства в качестве исходного файла.

Сценарий

Пример пакета прочитает файл, а затем запишет в текстовый файл с именем Destination.txt. В этом случае файл ошибок Error.txt будет создан, но позже будет удален, если ошибок нет. Здесь у меня есть файлы, хранящиеся в пути c:\temp\

Шаг за шагом:

  1. В разделе диспетчера соединений создайте три соединения с плоскими файлами, а именно: Источник , Адресат и Ошибка . Смотрите скриншот # 1 .
  2. Source соединение должно указывать на путь к файлу CSV c:\temp\Country_State.csv. См. Скриншот # 2 для содержимого этого файла.
  3. Destination соединение должно указывать на текстовый файл с именем c:\temp\Destination.txt.
  4. Error соединение должно указывать на текстовый файл с именем c:\temp\Error.txt.
  5. Создать переменную типа данных Int32 с именем ErrorCount.
  6. На вкладке Поток управления поместите Data Flow Task, а затем поместите File System Task.
  7. Подключите задачу потока данных к задаче файловой системы.
  8. Щелкните правой кнопкой мыши соединитель между задачей потока данных и задачей файловой системы.
  9. В Редакторе ограничений предшествования измените Оценочную операцию на Expression и вставьте значение @ErrorCount == 0 в текстовое поле Выражение .
  10. Ваш поток управления должен выглядеть так, как показано на скриншоте # 3 .
  11. Внутри задачи потока данных на вкладке «Поток данных» перетащите источник плоских файлов и настройте его для использования Source диспетчера соединений.
  12. Поместите пункт назначения плоского файла и настройте его для использования Destination диспетчера соединений.
  13. Подключите зеленую выходную стрелку из источника плоских файлов к назначению плоских файлов.
  14. Поместите преобразование Row Count на вкладку потока данных и настройте его для использования переменной User:ErrorCount.
  15. Соедините красную выходную стрелку из источника плоских файлов с преобразованием количества строк.
  16. Поместите пункт назначения плоского файла и настройте его для использования Error диспетчера соединений.
  17. Подключите выход из числа строк к назначению плоского файла, используя соединение Error.
  18. Ваша задача потока данных должна выглядеть так, как показано на скриншоте # 4 .
  19. На вкладке «Поток управления» дважды щелкните «Задача файловой системы».
  20. В редакторе задач файловой системы установите Operation на Delete file и установите SourceConnection на Error. Смотрите скриншот # 5 .
  21. Содержимое пути к папке C:\temp перед выполнением пакета показано на скриншоте # 6 .
  22. Выполнение вкладки потока данных показано на скриншоте # 7 .
  23. Выполнение потока управления показано на скриншоте # 8 .
  24. Содержимое пути к папке C:\temp после выполнения пакета показано на скриншоте # 9 .
  25. Чтобы показать, что это действительно работает, я изменил второй столбец в диспетчере соединений Source на целое число (даже если имена состояний - строки), чтобы задача потока данных перенаправлялась на вывод Error.
  26. Сценарий 2 Выполнение вкладки потока данных показано на скриншоте # 10 .
  27. Сценарий 2 Выполнение потока управления показано на скриншоте # 11 . Обратите внимание, что задача файловой системы не выполняется, поскольку файл ошибок не пуст.
  28. Содержимое пути к папке C:\temp после сценария 2 Выполнение пакета показано на скриншоте # 12 . Обратите внимание, что файл Destination.txt присутствует, хотя не было успешных строк. Это связано с тем, что в примере удаляется только файл ошибок, если он пустой.

Аналогичная логика может быть использована для удаления пустого файла назначения.

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

Снимок экрана № 1:

1

Скриншот № 2:

2

Скриншот № 3:

3

Снимок экрана № 4:

4

Скриншот № 5:

5

Снимок экрана № 6:

6

Снимок экрана № 7:

7

Снимок экрана № 8:

8

Снимок экрана № 9:

9

Снимок экрана № 10:

10

Скриншот № 11:

11

Снимок экрана № 12:

12

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...