у меня есть проблемы со следующим исключением:Transaction Timeout
Сделка, связанная с текущим подключением завершила , но не была удалена. Транзакция должна быть удалена до того, как соединение может использоваться для выполнения операторов SQL.
«Вызов» с базой данных занимает 10m 53s (испытано без операции и преуспели) и сделки он бросает исключение после 10м. Поэтому я уверен, что это не тот код, который создает проблему, но предел тайм-аута транзакции.
Я видел, что многие люди боролись с этой проблемой, но я пробовал все возможные решения, которые я нашел, но до сих пор не добился успеха, чтобы избавиться от этого исключения.
После кода я использую:
[...]
TransactionOptions transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = IsolationLevel.Snapshot;
transactionOptions.Timeout = new TimeSpan(0, 0, 30, 0, 0);
using(var scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
foreach (var selector in GetDataContext().sp_GetChangedSelectors(changeSet))
{
// xml-result will be stored in a file
}
// multiple other SP calls the same way
scope.Complete();
}
Я добавил заявление
<system.transactions>
<machineSettings maxTimeout="02:00:00"/>
</system.transactions>
к machine.config в % WINDIR% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config на обеих машинах (локальная и SQL-серверная машина).
У меня заканчиваются идеи, что я мог бы попробовать дальше. Какие-либо предложения?
Я дам ему попробовать – Viper
@Viper, который вы должны увидеть в диспетчере задач на вкладке «процессы», если приложение 32 бит (имя exe имеет добавленный _ * 32_) – toATwork
Nice. Thats it =) Большое спасибо вам. Не думайте о 32 и 64-битных проблемах. – Viper