Saturday, January 2, 2010

Distributed Transaction Coordinator (DTC) Timeout

When running a very expensive query, I always got timeouts when running this query on Friday's ;-) (Yes, I’m loving the predictability of our DB2 database)

The first thing I did to prevent the query from timing out was increasing the DbCommand timeout property:

   1:  var command=new DB2Command();
   2:  //Increase timeout to 300 seconds
   3:  command.CommandTimeout=300;

But after 60 seconds the query still timed out. So as I was using this query inside a TransactionScope, I also increased the transaction timeout:

   1:  //Initialize the transactionscope with a 300 seconds timeout interval
   2:  using(var transactionScope=new TransactionScope(TransactionScopeOption.Required,new TimeSpan(0,5,0))
   3:  {
   4:  ...
   5:  }

And even that was not enough, so I finally also increased the timeout interval of the DTC:

The Transactions Timeout value is located in the My Computer Properties dialog, which can be available in "Administrative Tools -> Component Service -> Computer -> My Computer ->
Right-click My Computer and then click Properties".

1 comment:

Anonymous said...

Simple and straight to the point. Perfect.