SQLRU.net
Разработка приложений баз данных

Начало » Microsoft.NET » ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM » SQLCommand.CommandTimeout и транзакция
SQLCommand.CommandTimeout и транзакция [сообщение #2470] Fri, 02 June 2023 15:34 Переход к следующему сообщению
tuturik в настоящее время не в онлайне  tuturik
Сообщений: 3
Зарегистрирован: June 2023
Junior Member
Что-то не могу нигде найти документацию по следующему вопросу:
Если, работая с клиентом SqlServer, открыв соединение в режиме автокоммита транзакций(вроде так называется - т.е. режим по умолчанию, т.е. без указания транзакций), и вызвав метод ExecuteNonQuery "сработал" CommandTimeout, то
1. CommandText закомитится(commit сработает)?
2. Если CommandText - это хранимая процедура, внутри которой в конце commit, то она закоммитится(commit сработает)?

PS. Предполагаю, что исключение по CommandTimeout никак не связано с транзакциями. Но что тогда будет в случае 1 и 2, если после этого эксепшена по timeout соединение сразу закрывается?
Re: SQLCommand.CommandTimeout и транзакция [сообщение #2471 является ответом на сообщение #2470] Fri, 02 June 2023 16:30 Переход к предыдущему сообщениюПереход к следующему сообщению
tuturik в настоящее время не в онлайне  tuturik
Сообщений: 3
Зарегистрирован: June 2023
Junior Member
Предполагаю следующие варианты:
а) Если в SqlCommand не передан объект транзакции, то транзакциями управляет сервер. Тогда, в случае успешного завершения CommandText на сервере, он(сервер) сделает commit во всех случаях(в 1, в 2 и в PS)
б) Если в SqlCommand не передан объект транзакции, то клиент неявно создаёт транзакцию и ею управляет, тогда он(клиент) сделает rollback во всех случаях (в 1, в 2 и в PS)
Re: SQLCommand.CommandTimeout и транзакция [сообщение #2472 является ответом на сообщение #2471] Fri, 02 June 2023 16:54 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 302
Зарегистрирован: June 2022
Senior Member
SqlCommand.CommandTimeout Property

command timeout - how to make sure that stored procedure is executed successfully or not at all?

Если вкратце, то если есть тайм-аут команды, то SqlCommand отправит «Внимание» (также называемое «Отмена») на сервер, что приведет к прерыванию текущей операции — это означает, что ваша транзакция не будет завершена и в конечном итоге откатится ( хотя может и не откатиться сразу).
Re: SQLCommand.CommandTimeout и транзакция [сообщение #2474 является ответом на сообщение #2470] Fri, 02 June 2023 18:41 Переход к предыдущему сообщению
tuturik в настоящее время не в онлайне  tuturik
Сообщений: 3
Зарегистрирован: June 2023
Junior Member
Спасибо за ответ
Переход к форуму:
  


Текущее время: Thu Jun 20 01:35:39 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00648 секунд