首页 文章

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

提问于
浏览
1

我按照这篇博客文章创建了ssis包,用于在2个表之间传输数据 . 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

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

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

1 回答

  • 3

    使用暂存区域,并使用执行SQL任务运行SQL或执行存储过程,以基于将暂存区域与目标进行比较来执行批量操作 .

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

相关问题