【问题标题】:SSIS ERROR-The transaction operation cannot be performed because there are pending requests working on this transactionSSIS 错误-无法执行事务操作,因为有正在处理此事务的挂起请求
【发布时间】:2014-10-07 11:35:55
【问题描述】:

在执行 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 语句正在发生冲突。包设置为什么隔离级别?
  • 隔离级别可序列化并支持事务选项

标签: ssis transactions parallel-processing rollback


【解决方案1】:

您可能有一个需要终止的死锁。您可以通过进入 sql server management studio 并运行以下命令来看到这一点:

SELECT * FROM SYSPROCESSES where blocked > 0

然后,如果这样做是安全的,则通过它的 ID 杀死进程,例如

杀死99

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多