Как предотвратить ошибку тайм-аута при выполнении процедуры хранения с помощью SqlCommand?

У меня есть программа на С#, которая запускает хранимую процедуру. Если я запустил хранимую процедуру из студии управления сервером Microsoft SQL Server, она работает нормально. Выполнение занимает около 30 секунд. Однако, если я попытаюсь запустить ту же самую хранимую процедуру из программы на С#, она истечет, даже если я установил таймаут в строке подключения на 10 минут.

using (connection1 = new SqlConnection("user id=user_id_goes_here;password=password_goes_here;initial catalog=database_name_goes_here;data source=server_name_goes_here;connection timeout=600))

Кажется, что тайм-аут примерно через 30 секунд, хотя я установил его для 10 минут (для целей тестирования).

Ответ 1

Тайм-аут на соединение только для подключения к базе данных.

Существует отдельное свойство CommandTimeout класса SqlCommand, используйте это свойство, чтобы указать время ожидания выполнения.

То есть.

using (SqlCommand cmd = new SqlCommand())
{
  cmd.Connection = connection1;
  cmd.CommandTimeout = 240; //in seconds
  //etc...
}

Ответ 2

Используйте SqlCommand.CommandTimeout свойство вашей команды вместо указания в строке подключения.

См. MSDN для справки.

Ответ 3

Вам нужно установить его в код i.e, установив свойство CommandTimeout для объекта команды sql.

Параметр "время ожидания соединения" в строке соединения представляет время ожидания при попытке установить соединение до прекращения попытки и создания ошибки. Это не тот момент, когда выполнение запроса истечет.

Спасибо, я также столкнулся с той же проблемой несколько недель назад и был смущен между значениями тайм-аута в webconfig vs в командном объекте. У меня вопрос очистился, теперь я сомневаюсь.

ссылка ссылки из msdn

Ответ 4

Тайм-аут соединения относится к количеству допустимого времени при фактическом подключении к SQL Server. Тайм-аут команды относится к тому, сколько времени допустимо для выполнения команды; в этом случае хранимую процедуру. SqlCommand.CommandTimeout - это свойство, которое вы ищете.