Быстрый вывод ошибок при загрузке не перенаправляет весь пакет
контекст
Я разрабатываю простой пакет служб SSIS, который содержит задачу потока данных с:
- 1 источник OLE DB
- 2 преобразования преобразования
- 1 OLE DB Назначение
- 1 Назначение OLE DB для строк вывода ошибок
Я использую опцию FastLoad в обоих пунктах назначения OLE DB, и я настроил вывод ошибок первого из них для перенаправления строк во второй пункт назначения.
Вопрос
Из многих онлайн-статей я читал, что использование опции Fastload приведет к сбою всего пакета, а не только ошибочные строки будут перенаправлены.
- Обработка ошибок с помощью OLE DB
- Ошибка вывода в OLE DB Destination. Как перенаправить строку?
- Как обрабатывать ошибочные строки в потоке данных
- Ваши сообщения об ошибках быстрой загрузки (массовой загрузки) и Row by Row SSIS тоже
Но при выполнении пакета только 2 строки перенаправляются, а все остальные строки импортируются успешно. И я проверил, что сумма количества строк в обоих местах назначения равна количеству строк источника, что означает, что перенаправляются только ошибочные строки.
Обратите внимание, что:
- Максимальный размер коммита =
2147483647
- Размер партии пуст
- Блокировка таблицы и опция проверки ограничений проверены
- Я использую SQL Server 2014 с Visual Studio 2013
Я не нашел подобного случая в Интернете. Любое объяснение?
1 ответ
То, что упомянул @DanGuzman, верно, поскольку существует два этапа проверки данных, когда дело доходит до адресата OLE DB:
- Проверка на стороне клиента
- Проверка на стороне сервера:
1. Проверка на стороне клиента:
Когда данные из конвейера в пункт назначения OLE DB, столбцы конвейера (внешние столбцы) отображаются в столбцы ввода пункта назначения OLE DB, которые должны иметь тип данных, относящийся к типам данных столбцов на стороне сервера (компонент Database Engine). Если произошла ошибка Во время передачи данных из внешних столбцов во входные столбцы назначения OLE DB, строка ошибки может быть перенаправлена одна.
Пример: неявная ошибка преобразования: когда DT_STR
поле сопоставлено с DT_DATE
и он содержит недопустимое значение даты
Когда мы говорим, что опция Fastload загружает данные в пакетном режиме, мы говорим о фазах, когда данные отправляются из входных столбцов назначения OLE DB в сам пункт назначения (компонент Database Engine)
2. Проверка на стороне сервера
Этот тип проверки выполняется при вставке данных в место назначения, таких как идентификация, первичный ключ или нарушение внешнего ключа...
Если на этом этапе возникает ошибка, вся партия отклоняется, и все строки перенаправляются на вывод ошибки.