我有一个Windows服务,该服务每10秒钟连续查询SQL Server数据库表,我还有一个网站,在25秒钟后也查询同一数据库表。
一段时间后,出现异常-server timeout exception has occurred
。我浏览了堆栈溢出站点,并完成了对SQL配置设置的更改,但仍然遇到相同的异常。该怎么办?
堆栈跟踪
在System.Data.SqlClient.SqlConnection.OnError(SqlException
例外,布尔值breakConnection)位于
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
例外,布尔值breakConnection)位于
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()在
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,
SqlCommand cmdHandler,SqlDataReader dataStream,
BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject
stateObj),位于System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
在System.Data.SqlClient.SqlDataReader.get_MetaData()在
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,
RunBehavior runBehavior,字符串resetOptionsString)在
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
cmdBehavior,RunBehavior,runBehavior,布尔returnStream,布尔
异步)
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior,RunBehavior,runBehavior,布尔值returnStream,字符串
方法,DbAsyncResult结果)位于
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior,RunBehavior,runBehavior,布尔值returnStream,字符串
方法)
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior
行为,String方法)在
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior
行为)
System.Data.Common.DbCommand.ExecuteReader(CommandBehavior行为)
在
Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteReader(DbCommand
命令,CommandBehavior cmdBehavior)在
Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(DbCommand
命令)
Microsoft.Practices.EnterpriseLibrary.Data.CommandAccessor 1.<Execute>d__0.MoveNext() at System.Collections.Generic.List
1..ctor(IEnumerable 1 collection)
1源)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
在System.Runtime.Remoting.Messaging.Message.Dispatch(Object target,布尔值fExecuteInContext)在
System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage
msg,Int32 methodPtr,布尔值fExecuteInContext)
最佳答案
给我看代码!超时异常通常是因为您没有关闭数据库连接。
尝试在算法的最后添加代码
if (connection.State == System.Data.ConnectionState.Open)
{
connection.Close();
connection.Dispose();
}
如果您习惯使用EnterpriseLibrary,请尝试将更多时间添加到commandTimeOut
DbCommand dbcommand = database.GetStoredProcCommand("usp_TheStoredProcedureName");
dbcommand.CommandTimeout = 120;
关于asp.net - Windows Service SQL超时异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13023727/