事务超时错误

时间:2017-04-19 06:10:58

标签: c# transactions ado.net

在我的C#应用​​程序中,我必须执行3个任务,并且我将所有内容放在事务范围内,并且我将事务时间设置为30分钟。

 using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew, 
 new TimeSpan(0, 30, 0)))
                    {
                        //1. Create an entry in database table
                        //2. call some external perl script which push data 
                           to some table
                        //3. update the table (step 1) with number of records generated (step 2)

                        scope.Complete();
                    }

通常第2步需要10分钟时间执行,第3步需要5分钟时间(第1步是真正的快速)。

我还设置了步骤3的命令超时,

sqlCom.CommandTimeout = 1800;

交易的所有3个任务都在最大15-20完成,但我仍然收到超时错误,

System.Transactions.TransactionAbortedException: The transaction has 
 aborted. ---> System.TimeoutException: Transaction Timeout
 --- End of inner exception stack trace ---
 at 
 System.Transactions.TransactionStateAborted.BeginCommit(InternalTransaction 
 tx, Boolean asyncCommit, AsyncCallback asyncCallback, Object asyncState)
  at System.Transactions.CommittableTransaction.Commit()
  at System.Transactions.TransactionScope.InternalDispose()
  at System.Transactions.TransactionScope.Dispose()

注意 - 当步骤2和3花费更少的时间(平均2-3分钟)时,我没有收到任何超时错误。

请建议我是否可以设置其他内容?

0 个答案:

没有答案