在执行 ssis 包时,出现以下错误:"The transaction operation cannot be performed because there are pending requests working on this transaction."
ssis 包有 4 个并行运行的执行 sql 任务。
连接是 ADO.Net。
执行sql任务调用一个有事务、回滚和提交的过程,
在执行 1 或 2 个执行 sql 任务时失败,其余任务成功。
此外,当任何一个sql任务失败时,其他执行sql任务的数据也会回滚。
我希望这些执行sql任务彼此独立运行。应该只回滚那些有任务的数据,而不是并行运行的任务的所有记录。
您可能遇到了需要终止的僵局。您可以通过进入 sql server management studio 并运行以下命令来查看这一点:
SELECT * FROM SYSPROCESSES where blocked > 0
然后,如果这样做是安全的,请通过其 ID 终止该进程,例如
kill 99
如果这是夜间 ETL 流程的一部分,您可能需要考虑在 SQL 代理中创建 4 个不同的作业步骤,并在夜间的不同时间执行它们。这可能会解决您遇到的问题。
否则,如果执行 SQL 任务需要在同一个包中运行,您将需要检查它们的运行顺序。 run 首先执行 sql 任务,然后转到下一个 - 例如将序列容器添加到控制流中,以确保第一个执行 sql 任务在下一个执行任务运行之前完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)