System.Transactions.TransactionAbortedException:事务已中止。 ---> System.TimeoutException:事务超时

时间:2015-04-27 06:54:12

标签: sql-server vb.net transactions

请参阅以下代码:

Dim intAddNicheMergeTotal As Integer = 0
        Dim intDeleteCount As Integer
        Dim ts As TimeSpan = New TimeSpan(0, 200, 0)
        Dim transOp As New TransactionOptions
        transOp.Timeout = ts
        Using scope = New TransactionScope(TransactionScopeOption.Required, transOp)
'Do some work, which takes about 35 minutes
scope.complete
End Using

上面的代码在scope.complete行引发了一个异常:System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.TimeoutException: Transaction Timeout

为什么交易中止?我已将超时时间设置为200分钟。

1 个答案:

答案 0 :(得分:3)

machine.config部分的system.transactions中,有一个maxTimeout设置。如果未明确设置任何值,则使用默认值10分钟。

此设置旨在允许系统管理员限制事务超时,并且您无法在代码中覆盖它。如果在代码中指定了更高的值(如您所示),则使用较低的maxTimeout设置。

您可以在machine.config中将其设置为更高的值,例如:

 <system.transactions>
  <machineSettings maxTimeout="00:03:20" />
 </system.transactions>

但此更改将适用于计算机上的所有交易。