SSIS死锁,因为需要在同一数据流任务中进行并行更新

问题描述 投票:0回答:1

我正在创建一个数据流任务,该任务将从源表中提取数据并将按如下方式更新目标表:

  • 1)使用源记录中的唯一ID在目标表中找到要更新的记录。
  • 2]如果目标表中不存在ID,请检查目标表中是否存在源记录的email
    • a)如果存在电子邮件,请通过email更新目标记录。同时更新该目标记录的唯一ID
    • b)如果电子邮件不存在,请在目标表中插入一条新记录。

所以,用简单的话说,我正在创建一个任务,该任务将更新其唯一ID上的表,如果它不匹配,它将尝试对其email进行更新。如果仍然找不到匹配项,它将插入一条新记录。

这意味着我将并行运行两个更新,如您在镜像中所见(两个带圆圈的组件将并行运行)SSIS_Data_Flow_Task

现在,由于这两个更新,这将产生死锁问题。

我已经尝试过使用With(NOLOCK),但是此提示用于读取数据,而不是对其进行更新。我还搜索了延迟任务,以将两个数据管道之一延迟到另一个完成。

有什么想法吗?为了避免一开始就进行多个并行更新,我是否可以设计不同的数据流任务?

任何帮助将不胜感激。

tsql ssis locking isolation-level database-deadlocks
1个回答
0
投票

使用这些类型的流,我总是使用工作表(目标表I​​D,工作类型(U或I),...)。第一步,我将需要完成的工作填入表格,然后应用该工作。

© www.soinside.com 2019 - 2024. All rights reserved.