Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SqlCommand+SqlTransaction: таймаут на коммите  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Здесь вопрос, может кто сталкивался с таким

https://www.sql.ru/forum/1181845/sqlcommand-i-sqltransaction-taymaut-na-kommite
27 окт 15, 11:48    [18331747]     Ответить | Цитировать Сообщить модератору
 Re: SqlCommand+SqlTransaction: таймаут на коммите  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Берем профайлер, отлавливаем Attention, SQL:BatchStarting, SQL:BatchCompleted и смотрим на чем возникает таймаут.
27 окт 15, 12:12    [18331927]     Ответить | Цитировать Сообщить модератору
 Re: SqlCommand+SqlTransaction: таймаут на коммите  [new]
Eleanor
Member

Откуда:
Сообщений: 2919
>> Почему коммит срабатывает, но выдается ошибка таймаута

Бывает, что SQL-сервер выполнил commit или rollback, но клиент подтверждение не получил. Случай описан в статье TransactionInDoubtException. Правда, сообщение об ошибке там другое.
27 окт 15, 13:58    [18332687]     Ответить | Цитировать Сообщить модератору
 Re: SqlCommand+SqlTransaction: таймаут на коммите  [new]
10 минут таймаут
Guest
Winnipuh,

так а вставляет он по факту за сколько?
27 окт 15, 14:08    [18332793]     Ответить | Цитировать Сообщить модератору
 Re: SqlCommand+SqlTransaction: таймаут на коммите  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Eleanor
>> Почему коммит срабатывает, но выдается ошибка таймаута

Бывает, что SQL-сервер выполнил commit или rollback, но клиент подтверждение не получил. Случай описан в статье TransactionInDoubtException. Правда, сообщение об ошибке там другое.


у меня клиент->WCF service->SQLServer

и сообщение идет от SQL Server.

Нашел такое, но не понял до конца.

После цикла, который выполняет в транзакции множество запросов к SQL Server
делается такое
if (tran != null && tran.Connection != null)
                        tran.Commit();


И при не большом количестве быстрых запросов все ок.
Но при >1000 gзапросы отрабатывают, но коммит не делается поскольку
tran.Connection=null
Проверил, там ConnectionTimeout=5 (sec)
Усановил =60 - все ок.

Вопрос, почему ConnectionTimeout влияет на выполнение запросов на уже открытой коннекции, в которой правда выполняется набор запросов в одной длинной транзакции?
Это вроде бы должно влиять на открытие только.
27 окт 15, 14:14    [18332857]     Ответить | Цитировать Сообщить модератору
 Re: SqlCommand+SqlTransaction: таймаут на коммите  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
и сообщение идет от SQL Server.

Никогда SQL Server не сообщал об истечении _клиентского_ таймаута.
Потому что SQL Server никогда ничего не знал о клиентском таймауте.

Winnipuh
Вопрос, почему ConnectionTimeout влияет на выполнение запросов на уже открытой коннекции, в которой правда выполняется набор запросов в одной длинной транзакции?
Это вроде бы должно влиять на открытие только.

Потому что вы не знаете, сколько коннектов использует ваш клиентский код.
27 окт 15, 14:18    [18332891]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить