2014-10-07 147 views
2

在执行的SSIS包,我收到以下错误:"The transaction operation cannot be performed because there are pending requests working on this transaction."SSIS错误,交易操作

SSIS包有4个执行运行并行SQL任务。 连接是ADO.Net。

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

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

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

+0

这听起来像是你的SQL语句正在发生冲突。该软件包设置了什么隔离级别? – 2014-10-07 12:45:20

+0

隔离级别是可序列化的,并且支持事务选项 – Kapil 2014-10-07 14:14:46

回答

2

您可能会遇到需要被终止的死锁。您可以通过进入SQL Server Management Studio并运行看到以下内容:

SELECT * FROM SYSPROCESSES where blocked > 0 

然后,如果它是安全的话,它的ID例如杀死进程

杀死99

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

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