Таймаут транзакций

Во время длинных (дольше десяти минут) операций сервер может выдать следующую ошибку:

 ExecuteNonQuery exception:

 The transaction associated with the connection has completed but not yet disposed.

 Dispose the transaction to execute SQL statements on this connection.

Это происходит вследствие того, что транзакции (классы из пространства имен System.Transactions, появившиеся в .NET 2.0) по умолчанию имеют максимальный таймаут равный 10 минутам. При старте сервер приложений проверяет настройки системы и пишет предупреждение об этом:

 Maximum transaction timeout: 10

 To set the infinite timeout, adjust your machine.config file as follows...

Для решения проблемы следует отредактировать файл machine.config, который можно найти в папке:

 %WINDIR%\Microsoft.NET\Framework64\%номер версии%\Config

Настройка, снимающая ограничение на максимальную длительность транзакции, выглядит следующим образом:

<configuration>

 <system.transactions>

         <machineSettings maxTimeout="00:00:00" />

 </system.transactions>

</configuration>