繁体   English   中英

ExecuteQueryin linq:超时已过期。 操作完成之前经过的超时时间或服务器没有响应

[英]ExecuteQueryin linq :Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding

我在执行datacontext.ExecuteCommand(objectname)时遇到错误

错误:

System.Data.SqlClient.SqlException:超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 该语句已终止。 示例代码:

Datacontext context = new Datacontext();
tablename tb=new tablename();

string DeleteQuery="delete from table A";
context.ExecuteCommand<tb>(DeleteQuery);
DeleteQuery=string.empty;


string InsertQuery="Insert into table B(a,b,c,d)Select table from C Union All Select Table from D";
context.ExecuteCommand<tb>(InsertQuery);
InsertQuery=string.empty;

这里执行插入查询时我得到一个错误System.Data.SqlClient.SqlException:超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 该语句已终止。

错误页面如下

'/ Portal'应用程序中的服务器错误。

超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 该语句已终止。 描述:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 该语句已终止。

来源错误:

第914行:其中ft.IsDeleted = 0且ym.IsDeleted = 0且ym.IsApproved = 1“);第915行:第916行:dc.ExecuteQuery(InsertCommand);第917行:InsertCommand = string.Empty;第918行:

源文件:d:\\ Website \\ IDCCircle_Staging \\ Portal \\ Default.aspx.cs行:916

堆栈跟踪:

[SqlException(0x80131904):超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 该语句已终止。] System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection)+2062078 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,Boolean breakConnection)+5050204 System.Data.SqlClient.TdsParser .ThrowExceptionAndWarning()+234 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)+2275 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()+ 33 System.Data。 SqlClient.SqlDataReader.get_MetaData()+86 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)+311 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async)+987 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolea n returnStream,String方法,DbAsyncResult结果)+162 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method)+32 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,String method )+141 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)+12 System.Data.Common.DbCommand.ExecuteReader()+12 System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query,QueryInfo queryInfo,IObjectReaderFactory) factory,Object [] parentArgs,Object [] userArgs,ICompiledSubQuery [] subQueries,Object lastResult)+1266 System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query,QueryInfo [] queryInfos,IObjectReaderFactory factory,Object [] userArguments, ICompiledSubQuery [] subQueries)+113 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)+344 System.Data.Linq.DataContext.ExecuteMethodCall(Object instance,Method 信息methodInfo,Object [] parameters)+83 System.Data.Linq.DataContext.ExecuteQuery(String query,Object [] parameters)+265 _Default.NHPgridbind()在d:\\ Website \\ IDCCircle_Staging \\ Portal \\ Default.aspx.cs :916 _Default.Page_Load(Object sender,EventArgs e)在d:\\ Website \\ IDCCircle_Staging \\ Portal \\ Default.aspx.cs:97 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e )+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+35 System.Web.UI.Control.OnLoad(EventArgs e)+91 System.Web.UI.Control.LoadRecursive()+74 System .Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+2207


版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.272

如果表C和D包含很多行,则运行插入的时间可能比默认命令超时(30秒)要长。 在insert命令之前添加以下行:

context.CommandTimeout = 240  // set timeout to 4 minutes

顺便说一句,你应该在完成它后处理上下文。 最简单的方法是:

using (Datacontext context = new Datacontext())
{
    // your code goes here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM