我有一些奇怪的行为,无法找出原因。我看到间歇性超时异常。我很确定它与数量有关,因为它在我们的开发环境中是不可复制的。作为一个临时的解决方案,我尝试将sql命令超时提高到60秒,但是正如我发现的那样,这似乎无济于事。这是奇怪的部分,当我检查失败的进程的日志时,这是开始时间和结束时间:
09/16/2008 16:21:49 09/16/2008 16:22:19 那么当我将命令超时设置为60时,怎么可能在三十秒内超时呢?
仅供参考,这是抛出的异常:
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)
SQL命令超时是因为您正在使用的查询比执行查询所花费的时间更长。在Query Analyzer或Management Studio中执行它,并在数据库中存储大量数据,然后查看执行计划以找出运行缓慢的问题。
如果某件事花费大量时间,并被描述为“表扫描”或“聚集索引扫描”,请查看是否可以创建将该操作转变为键查找的索引(索引查找或聚集索引)寻求)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。