Быстрый вывод ошибок при загрузке не перенаправляет весь пакет - PullRequest
1 голос
/ 14 июня 2019

Контекст

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

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

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

Вопрос

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

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

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

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

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

1 Ответ

1 голос
/ 14 июня 2019

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

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

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

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

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

enter image description here

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

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

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

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

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