У меня есть любопытное поведение, с которым мне трудно понять, почему происходит. Я вижу прерывистые тайм-ауты. Я почти уверен, что это связано с объемом, потому что он не воспроизводится в нашей среде разработки. В качестве решения для бандажей я попытался увеличить тайм-аут команды sql до шестидесяти секунд, но, как я нашел, это, похоже, не помогает. Вот что странно, когда я просматриваю журналы на процессе, который падает, вот начала и время окончания:Устранение неполадок Тайм-аут SqlExceptions
- 09/16/2008 16:21:49
- 09/16/2008 16 : 22: 19
Так как же могло случиться так, что это тайм-аут за тридцать секунд, когда я установил тайм-аут команды на шестьдесят?
Просто для справки, вот исключение бросают:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader()
at SetClear.DataAccess.SqlHelper.ExecuteReader(CommandType commandType, String commandText, SqlParameter[] commandArgs)
Оказалось, что нам просто нужно добавить новый индекс :-) – 2008-09-24 14:15:23