Быстрый вывод ошибок при загрузке не перенаправляет весь пакет

контекст

Я разрабатываю простой пакет служб SSIS, который содержит задачу потока данных с:

  • 1 источник OLE DB
  • 2 преобразования преобразования
  • 1 OLE DB Назначение
  • 1 Назначение OLE DB для строк вывода ошибок

Я использую опцию FastLoad в обоих пунктах назначения OLE DB, и я настроил вывод ошибок первого из них для перенаправления строк во второй пункт назначения.

Вопрос

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

Но при выполнении пакета только 2 строки перенаправляются, а все остальные строки импортируются успешно. И я проверил, что сумма количества строк в обоих местах назначения равна количеству строк источника, что означает, что перенаправляются только ошибочные строки.

Обратите внимание, что:

  • Максимальный размер коммита = 2147483647
  • Размер партии пуст
  • Блокировка таблицы и опция проверки ограничений проверены
  • Я использую SQL Server 2014 с Visual Studio 2013

Я не нашел подобного случая в Интернете. Любое объяснение?

1 ответ

Решение

То, что упомянул @DanGuzman, верно, поскольку существует два этапа проверки данных, когда дело доходит до адресата OLE DB:

  1. Проверка на стороне клиента
  2. Проверка на стороне сервера:

1. Проверка на стороне клиента:

Когда данные из конвейера в пункт назначения OLE DB, столбцы конвейера (внешние столбцы) отображаются в столбцы ввода пункта назначения OLE DB, которые должны иметь тип данных, относящийся к типам данных столбцов на стороне сервера (компонент Database Engine). Если произошла ошибка Во время передачи данных из внешних столбцов во входные столбцы назначения OLE DB, строка ошибки может быть перенаправлена ​​одна.

Пример: неявная ошибка преобразования: когда DT_STR поле сопоставлено с DT_DATE и он содержит недопустимое значение даты

Когда мы говорим, что опция Fastload загружает данные в пакетном режиме, мы говорим о фазах, когда данные отправляются из входных столбцов назначения OLE DB в сам пункт назначения (компонент Database Engine)

2. Проверка на стороне сервера

Этот тип проверки выполняется при вставке данных в место назначения, таких как идентификация, первичный ключ или нарушение внешнего ключа...

Если на этом этапе возникает ошибка, вся партия отклоняется, и все строки перенаправляются на вывод ошибки.

Другие вопросы по тегам