【问题标题】:SSIS – Locking in Target table when SCD is implemented using LookupSSIS – 使用 Lookup 实现 SCD 时锁定目标表
【发布时间】:2013-11-08 08:35:10
【问题描述】:

为了覆盖 SSIS 数据流中的内置 SCD 转换,我使用了列的校验和值和查找。下面是过程。

我需要在 Target_Fact_table 中实现 SCD 类型 1。

来源查询

Select key, a, b, CHECKSUM (a,b) new_value from Source_table

在查找中

Select  key, CHECKSUM (a,b) Old_value from Target_Fact_table

如果未找到匹配,则插入记录,如果找到匹配,则比较 New_value 和 Old_value,如果有任何更改,则更新记录。

第一次运行没有任何问题。但是第二次当源有更多记录要更新和插入时,目标表将因为批量插入和更新而被锁定。

我尝试从 OLE DB 目标任务中删除表锁定,但锁定仍然存在。

我可以做些什么来避免这种锁定,或者我可以在更新转换中放一些小的延迟?

【问题讨论】:

  • 也许你可以数据流设计图片上传...这样会更容易
  • 我无法上传图片。对不起。

标签: sql-server sql-server-2008 ssis


【解决方案1】:

您的最佳解决方案是代替 OLEDB 命令来更新匹配的值,将匹配的数据插入目标中的临时表,然后在事实表和临时表上执行单个 UPDATE JOIN 语句以更新所有新的价值观。

这避免了锁定,提高了吞吐量,并且可以为更改提供更清晰的审计跟踪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多