我有一个Windows服务,连续每10秒查询一次SQL Server数据库表,我还有一个网站,它也在25秒后查询同一个数据库表。
一段时间后,我得到例外 - server timeout exception has occurred
。我经历了堆栈溢出站点并完成了对SQL配置设置的更改但仍然得到了相同的异常。怎么办?
堆栈跟踪
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection)at System.Data.SqlClient.SqlInternalConnection.OnError(SQLEXCEPTION exception,Boolean breakConnection)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler,SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject System.Data.SqlClient.SqlDataReader.ConsumeMetaData()中的stateObj) 在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 方法,DbAsyncResult结果)at System.Data.SqlClient.SqlCommand.RunExecuteReader(的CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String 方法)at System.Data.SqlClient.SqlCommand.ExecuteReader(的CommandBehavior 行为,String方法)at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(的CommandBehavior 行为) System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
在 Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteReader(的DbCommand 命令,CommandBehavior cmdBehavior)at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(的DbCommand 命令)at Microsoft.Practices.EnterpriseLibrary.Data.CommandAccessor1.<Execute>d__0.MoveNext() at System.Collections.Generic.List
1..ctor(IEnumerable1 collection)
1个来源) at System.Runtime.Remoting.Messaging.Message.Dispatch(Object target,Boolean fExecuteInContext)at at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(即时聊天 msg,Int32 methodPtr,Boolean fExecuteInContext)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
答案 0 :(得分:1)
告诉我代码!超时异常通常是因为您没有关闭数据库连接。
尝试在算法的最后添加代码
if (connection.State == System.Data.ConnectionState.Open)
{
connection.Close();
connection.Dispose();
}
如果您使用EnterpriseLibrary,请尝试向commandTimeOut添加更多时间
DbCommand dbcommand = database.GetStoredProcCommand("usp_TheStoredProcedureName");
dbcommand.CommandTimeout = 120;