SSIS错误 - 无法执行事务操作,因为存在处理此事务的待处理请求

时间:2014-10-07 11:35:56

标签: ssis transactions parallel-processing rollback

执行ssis包时,我收到以下错误:"The transaction operation cannot be performed because there are pending requests working on this transaction."

ssis包有4个执行并行运行的sql任务。 连接是ADO.Net。

execute sql tasks调用一个具有事务,回滚和提交的过程, 执行1或2时,执行sql任务失败并保持成功。

此外,在任何sql任务失败时,其他执行sql任务的数据也会回滚。

我希望这些执行sql任务彼此独立运行。数据应该仅针对具有并行运行的任务的所有记录的任务而回滚。

1 个答案:

答案 0 :(得分:2)

您可能遇到需要被杀死的死锁。你可以通过进入sql server management studio并运行以下命令来看到这一点:

SELECT * FROM SYSPROCESSES where blocked > 0

然后,如果这样做是安全的,请通过其ID来终止该过程,例如

杀99

如果这是每晚ETL过程的一部分,您可能需要考虑在SQL Agent中创建4个不同的作业步骤,并在夜间的不同时间执行它们。这可能会解决您遇到的问题。

否则,如果执行SQL任务需要在同一个包中运行,您将需要检查它们的运行顺序。首先执行sql任务,然后转到下一个 - 例如向控制流添加一个序列容器,以确保在下一个运行之前完成第一个执行sql任务。