Если я вас правильно понял, у вас есть дубликаты PK, которые имеют другие данные в других полях.
Сначала поместите данные из другой базы данных в промежуточную таблицу.Мне легче исследовать проблемы с импортом (особенно крупными), если я это сделаю.На самом деле я использую две промежуточные таблицы (и для этого случая я настоятельно рекомендую это), одну с необработанными данными, а другую только с данными, которые я намерен импортировать в мою систему.
Теперь вы можете использовать и выполнить задачу SQL, чтобы получить одну из записей для каждого ключа (см. @Quassnoi, чтобы узнать, как это сделать, вам может понадобиться настроить его запрос для вашей ситуации).Лично я помещаю идентификационные данные в свою промежуточную таблицу, чтобы определить, какое первое или последнее появление дублированных данных.Затем поместите запись, которую вы выбрали для каждого ключа, во второй промежуточный стол.Если вы используете таблицу исключений, скопируйте в нее записи, которые вы не перемещаете, и не забудьте код причины для исключения (например, «Дублированный ключ»).
Теперь, когда у вас есть только одна записьдля каждого ключа в промежуточной таблице ваша следующая задача - решить, что делать с другими данными, которые не являются уникальными.Если для одного и того же клиента есть два разных рабочих адреса, какой вы выбрали?Это вопрос определения бизнес-правил, а не строго SSIS или SQL-кода.Вы должны определить бизнес-правила для того, как вы выбрали данные, когда данные должны быть объединены между двумя записями (то, что вы делаете, является эквивалентом процесса дедупликации).Если вам повезет, есть поле даты или другой способ определить, какие данные являются самыми новыми или самыми старыми, и именно эти данные они хотят, чтобы вы использовали.В этом случае, как только вы выбрали только одну запись, вы выполняете начальное преобразование.
Более чем вероятно, хотя вам могут понадобиться разные правила для каждого другого поля, чтобы выбрать правильное.В этом случае вы записываете преобразования SSIS в поток данных или задачи Exec SQl, чтобы выбрать правильные данные и обновить промежуточную таблицу.
Как только у вас будет точная запись, которую вы хотите импортировать, выполните поток данных, чтобы перейти к правильным рабочим таблицам.