Я создаю задачу потока данных, которая будет извлекать данные из исходной таблицы и будет обновлять таблицу назначения следующим образом:
- 1) Использовать уникальный идентификатор в исходной записи, чтобы найти запись, которую вы хотите обновить в таблице назначения.
- 2) Если идентификатор не существует в таблице назначения, проверьте, является ли email исходной записи вместо этого существует в таблице назначения.
- a) Если электронная почта существует, обновите целевую запись с помощью электронной почты . Также обновите уникальный идентификатор этой целевой записи.
- b) Если электронная почта не существует, вставьте новую запись в целевую таблицу.
Итак, простыми словами я создаю задачу, которая будет обновлять таблицу по ее уникальному идентификатору и, если она не соответствует , он будет пытаться обновить свою электронную почту . Если он по-прежнему не находит соответствия, он будет вставлять новую запись.
Это означает, что у меня будет два параллельных обновления, как вы можете видеть на изображении (два обведенных кружком компонента будут работать параллельно) SSIS_Data_Flow_Task
Теперь, из-за этих двух обновлений возникает проблема взаимоблокировки.
Я пытался использовать With (NOLOCK), но этот совет предназначен для чтения данных, а не их обновления. Я также искал задачи задержки, чтобы задержать один из двух конвейеров данных до завершения другого.
Есть идеи? Могу ли я по-другому спроектировать задачу потока данных, чтобы избежать множественных параллельных обновлений?
Любая помощь будет принята с благодарностью.