2015-06-10 4 views
3

У меня есть хранимая процедура, которая занимает около 10 секунд для запуска при вызове из SSMS и выполняется успешно. Процедура принимает параметр int.Сохраненная процедура timeout вызвана из кода, выполняется нормально с SSMS

При вызове же хранимую процедуру из кода:

using (var connection = new SqlConnection(ConnectionStringName)) 
{ 
    using (var cmd = new SqlCommand("ProcedureName", connection)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add(new SqlParameter("@itemId", itemId)); 
     cmd.CommandTimeout = 150; 

     connection.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
} 

Ошибки я получаю следующее:

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. 
The timeout period elapsed prior to completion of the operation or the server is not responding. ---> 
System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out 

Передаваемый параметр действителен и при вызове хранимой процедуры из SSMS с то же самое значение параметра выполняется правильно.

+0

Сколько времени требуется на выполнение SSMS? – rikitikitik

+0

Около 10 секунд. –

+0

@ shA.t Удалена эта строка, и я получаю то же исключение, только быстрее. –

ответ

2

Чтобы избежать этой ошибки просто использовать:

cmd.CommandTimeout = 0; 

Примечание:
Вашего выполнения запроса будет принимает инфинитивное время.

2

Возможно, вы забыли указать направление параметра, так как вы можете указать входные и выходные параметры. Попробуйте, если это работает:

SqlParameter param = new SqlParameter("@itemId", itemId); 
param.Direction = ParameterDirection.Input; 
cmd.Parameters.Add(param); 
+0

Нет, даже с этим изменением я получаю ту же ошибку. –

 Смежные вопросы

  • Нет связанных вопросов^_^