Подтвердить что ты не робот

Объект SqlCommand, какой промежуток времени для CommandTimeout?

Как я могу решить, сколько времени использовать в качестве таймаута при использовании объекта SqlCommand?

В части кода, над которым я работаю (написано кем-то еще), я:

cmd.CommandTimeout = 60;

Которое я считаю довольно коротким. Тем не менее, я видел, как некоторые люди на форумах говорили о том, чтобы установить его на 30000, что кажется слишком длинным.

Как узнать, что лучше для моего приложения?

4b9b3361

Ответ 1

Похоже, что люди путаются в том, что это секунды или миллисекунды. В документации указано, что тайм-аут находится в секундах. Для большинства запросов представляется разумным 1-минутный тайм-аут. 8-часовой тайм-аут не кажется разумным.

У вас есть вопросы, на которые вы ожидаете больше минуты? Если это так, поднимите его до значения, которое вы ожидаете выше, чем все, что вы увидите, если все будет работать должным образом, но не настолько высоко, чтобы навсегда предупредить вас о проблеме. (Например, вы можете перейти от 1 минуты до 5 минут.)

Ответ 2

Значение по умолчанию - 30 секунд (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx).

Если ваша база данных находится на том же компьютере, вам обычно не нужно ее менять. Просто попробуйте: если у вас возникнут таймауты подключения, увеличьте значение.

Ответ 3

Вы должны рассчитать, сколько времени займет самый длинный запрос и, возможно, умножить это значение на 1,5 для обработки перегрузки сервера, сетевого трафика и т.д.

Ответ 4

Это в SECONDS, и это полностью зависит от того, как долго может произойти фактическая команда SQL.

Например, большинство наших команд запускают sproc, для завершения которого требуется не более 30 секунд, однако есть пара, которая работает намного дольше, а это означает, что у них есть свои собственные высоко оцененные таймауты.

Вам нужно будет определить, как долго в среднем выполняется ваша подпрограмма, затем соответствующим образом настройте тайм-аут и не забудьте оставить место для переменных, таких как латентность и т.д.

Ответ 5

SqlCommand.CommandTimeout используется для установки времени ожидания перед прекращением попытки выполнить команду, а это означает, что время, когда вы хотите, чтобы ваш SqlCommand выполнял конкретный SQL-запрос или хранимую процедуру и дождался завершения. Если команда не завершена в указанное время, она будет завершена, и исключение будет выброшено..

Таким образом, установка значения CommandTimeout полностью зависит от вашего приложения и требований, если вы знаете, что инструкция sql или хранимая процедура, которую вы выполняете, будут меньше, чем установить значение более 60, в противном случае 60 секунд достаточно ждать завершения любого заявления.