0

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

-推断成员更新输出直接进入 OLE DB 更新命令。

-历史属性转到设置删除日期的派生列,然后转到更新 OLE DB 命令,然后转到与最后一组新输出联合的联合框。

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

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

“事务(进程 ID 170)与另一个进程在锁定资源上死锁,并已被选为死锁受害者。重新运行事务。”

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

我正在使用 SQL Server 2012 Data Tools 来调查和编辑包,但我不确定从这里到哪里去寻找问题。

我想离开那里,我是 SSIS 编程方面的新手......不碍事......任何帮助将不胜感激,即使它只是将我指向一个我没有看过的地方求助。

4

1 回答 1

0

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

于 2021-04-11T16:18:27.540 回答