具有缓慢变化维度的SSIS死锁

时间:2017-09-26 14:41:50

标签: sql-server ssis sql-server-2012-datatools s

我正在运行一个SSIS包,其中包含从外部源上传的单个平面文件中的许多(7)个读取。在其中一个数据流上,每个环境(测试,预生产和生产)始终存在死锁,这些数据流使用缓慢变化的维度来更新包含新行和更改行的现有SQL表。 我有三组来自SCD SSIS Data Flow

- 推荐的成员更新输出直接转到OLE DB更新命令。

-Historical Attribute转到一个派生列,用于设置删除日期,然后转到更新OLE DB命令,然后转到一个联合框,在那里它与最后一组New Output结合。

- 新输出与历史输出​​一起进入联合框,然后进入添加更新/创建日期的派生列框,然后将值插入与推断成员输出数据库命令相同的SQL表中。

我在日志中遇到的唯一错误如下:

“事务(进程ID 170)在锁资源上与另一个进程陷入僵局,并被选为死锁牺牲品。重新运行该事务。”

我可以将(NOLOCK)语句放入OLE db命令,但我已经读过这不是要走的路。

我正在使用SQL Server 2012数据工具来调查和编辑软件包,但我不确定从哪里开始查找问题。

我想离开那里,我在SSIS编程方面是一个新手...这样做了...任何帮助都会非常感激,即使它只是指向我的地方我避风港寻求帮助。

1 个答案:

答案 0 :(得分:0)

在 WHERE 条件列上添加索引可能会解决您的问题。在列上添加索引后,事务将以更快的方式执行,从而减少死锁的机会。