#ssis
#ssis
Вопрос:
Как вы, ребята, обрабатываете проверки ссылочной целостности в SSIS для сопоставления таблиц. В настоящее время я выполняю поиск на ранней стадии процесса и перенаправляю несоответствия в таблицу ошибок. Это лучший способ? Я делал другие пакеты, в которых я проверял наличие ошибок при сбросе данных в таблицу, но, похоже, если вы используете fastload, то при возникновении ошибки перенаправляется весь пакет.
Есть ли лучший способ или я делаю это правильно?
Ответ №1:
Существует три способа проверки ссылочной целостности в SSIS:
- в исходном запросе (если вы можете выполнить правильное объединение в исходном запросе)
- использование некоторого компонента (поиск, объединение / слияние, задача сценария)
- пусть получатель сообщает об ошибке
Как вы уже сказали, fastload destination перенаправляет весь пакет на вывод ошибки. Если вы ожидаете, что проблемы с ссылочной целостностью будут возникать редко, вы можете захотеть:
- перенаправить строки ошибок в другое место назначения в ту же таблицу, но задать для назначения запись пакетами по 1 строке
- затем перенаправьте строки ошибок из этого нового назначения в таблицу ошибок
Это должно работать нормально, если размер вашего целевого пакета не слишком велик, в противном случае это решение может быть медленным для вас. Кроме того, вы можете рассмотреть возможность отключения ограничений проверки или отключения внешних ключей перед вставкой и повторным включением внешних ключей после вставки.
И если вы предпочитаете использовать поиск / объединение и используете один и тот же поиск в нескольких потоках данных, рассмотрите возможность кэширования этих поисков.