Как продлить время ожидания SQL-запроса

Я предпочитаю, если / else структуры, потому что гораздо легче оценить все возможные состояния вашей проблемы в каждом варианте вместе с переключателями. Это более надежное решение, которое я нахожу и быстрее отлаживаю, особенно когда вы выполняете несколько булевых оценок в слабо типизированной среде, например PHP, например, почему elseif является плохим (преувеличенным для демонстрации):

if(a && (c == d))
{
} elseif ( b && (!d || a))
{
} elseif ( d == a && ( b^2 > c))
{
} else {
}

Эта проблема имеет выше 4 ^ 2 = 16 булевых состояний, что просто демонстрирует эффекты слабого ввода, что еще хуже. Не так сложно представить три переменные состояния, три переменные проблемы, связанные с типом пути if ab elseif bc.

Оставить оптимизацию компилятору.

34
задан Sander Versluys 10 July 2009 в 22:01
поделиться

3 ответа

If you are using the EnterpriseLibrary (and it looks like you are) try this:

 Microsoft.Practices.EnterpriseLibrary.Data.Database db = Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase("ConnectionString");
 System.Data.Common.DbCommand cmd = db.GetStoredProcCommand("StoredProcedureName");
 cmd.CommandTimeout = 600;
 db.AddInParameter(cmd, "ParameterName", DbType.String, "Value");

 // Added to handle paramValues array conversion
 foreach (System.Data.SqlClient.SqlParameter param in parameterValues) 
 {
     db.AddInParameter(cmd, param.ParameterName, param.SqlDbType, param.Value);
 }

 return cmd.ExecuteScalar();

Edited to handle the paramValues array directly based on the comments. I also included your ConnectionString value:

Microsoft.Practices.EnterpriseLibrary.Data.Database db = Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase(connectionManager.SqlConnection.ConnectionString);
System.Data.Common.DbCommand cmd = db.GetStoredProcCommand("StoredProcedureName", parameterValues);
cmd.CommandTimeout = 600;
return cmd.ExecuteScalar();
30
ответ дан 27 November 2019 в 16:45
поделиться

вы делаете это, устанавливая свойство SqlCommand.CommandTimeout

23
ответ дан 27 November 2019 в 16:45
поделиться

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

0
ответ дан 27 November 2019 в 16:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: