首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过SqlConnection WEB实现SqlConnection超时错误

通过SqlConnection WEB实现SqlConnection超时错误
EN

Stack Overflow用户
提问于 2014-12-29 19:21:16
回答 1查看 1.7K关注 0票数 0

我正在尝试从ASP.WebAPI执行一个存储过程(查询)。我已经开发了它(命令超时为300秒)。

一开始,从Web调用存储过程非常快,但是在调用相同的WEB几天之后,它会给我超时错误(如下所示)。

同时,如果我尝试使用相同的参数执行相同的存储过程,甚至直接从执行相同的存储过程,它将在几秒钟内执行。

守则:

代码语言:javascript
复制
public List<ScheduledTitles> GetScheduledTitles(CriteriaFields _criteria)
{
        try
        {
            System.Data.DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter();

            using (SqlConnection con = new SqlConnection(_strDBConnection))
            {
                con.Open();
                SqlCommand comm = new SqlCommand();
                comm.Connection = con;
                comm.CommandText = "spQuery_1";
                comm.Parameters.Add(new SqlParameter() { ParameterName = "Product_Line_ID", SqlDbType = SqlDbType.Int, Value = _criteria.ProductLineID == null ? (object)System.DBNull.Value : _criteria.ProductLineID });

                comm.CommandType = CommandType.StoredProcedure;
                da.SelectCommand = comm;
                comm.CommandTimeout = 300;
                da.Fill(ds);
            }
            .
            .
            . 

            return scheduledTitlesS.ToList<ScheduledTitles>();
       }
       catch (Exception exc)
       { 
            throw exc;
       }
    }

错误信息:

在操作完成或服务器没有响应之前经过的超时时间。 在System.Data.SqlClient.SqlConnection.OnError(SqlException异常时,布尔breakConnection,Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() 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, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1完成,Int32超时,任务和任务,布尔asyncWrite) 在System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean,String方法) 在System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior行为中,字符串方法) 在System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior行为中,字符串方法) (在System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior行为) (在System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior行为) 在System.Data.Common.DbDataAdapter.FillInternal(DataSet数据集上,DataTable[]数据集,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand命令,CommandBehavior行为) 在System.Data.Common.DbDataAdapter.Fill(DataSet dataSet,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand命令,CommandBehavior行为) 在System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) 在C:\ HERS_SearchQuery.Data.DataAccess.SQLServer.HERSScheduleRepository.GetScheduledTitles(CriteriaFields \nah\_criteria\Visual 2010\Projects\HERS_SchedulerSearch\HERS_SearchQuery.Data\DataAccess\SQLServer中

EN

回答 1

Stack Overflow用户

发布于 2014-12-29 20:21:01

几年前我有一个类似的问题,我用这个选项解决了这个问题。

用重新编译

在闪存的过程中。发生的情况是,SQL SERVER缓存的执行计划并不是所有参数都是有效的。

当然,我不知道这是否能解决你的问题,但我认为值得一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27694716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档