SSIS合并连接以更新或删除永久锁定的行

时间:2016-12-22 13:18:42

标签: sql-server ssis

我按照这篇博客文章创建了ssis包,用于在两个表之间传输数据。 http://radacad.com/insert-update-and-delete-destination-table-with-ssis

  • 插入行:不是isnull(source_id)和isnull(dest_id)
  • 删除行:isnull(source_id)而不是isnull(dest_id)
  • 更新行:source_id = dest_id和source_row_version<> dest_row_version enter image description here

适用于少量记录。但是,当检测到大量更新和删除行时(数千或数十万行)。它运行速度很慢,目标表被锁定,作业从未完成。另外,这种方法逐行删除和更新。

在这种情况下,请你帮我克服桌子锁。有没有办法让我们可以更新或删除一批行而不是一行一行?

1 个答案:

答案 0 :(得分:3)

使用暂存区域,并使用执行SQL任务运行SQL或执行存储过程,以根据您的暂存区域与目标进行比较来执行批量操作。

如果您希望在SSIS中执行所有操作,但使用阻塞转换(MERGE JOIN is semi-blocking),并且逐行OLE命令转换通常不能很好地扩展,我知道这不是一个非常令人满意的答案大量数据。