我有服务/应用程序连接到mssql服务器,它有时会跟随堆栈跟踪崩溃:
Uncaught exception: ArgumentOutOfRangeException - Specified argument was out of the range of valid values.
Parameter name: capacity, thrown at: mscorlib
Stack Trace:
at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument)
at System.Collections.Generic.Dictionary`2..ctor(Int32 capacity, IEqualityComparer`1 comparer)
at System.Data.ProviderBase.DbConnectionFactory.PruneConnectionPoolGroups(Object state)
at System.Threading._TimerCallback.TimerCallback_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading._TimerCallback.PerformTimerCallback(Object state)
嗯,事实上,我不使用计时器,(我不确定计时器的确切位置是什么),我无法找到这次崩溃的原因。 你有没有经验/你有没有看到为什么会发生这种情况,以及如何避免它(或忽略它?)。服务的运行时间对我来说至关重要。
答案 0 :(得分:2)
您是否正确清理了数据库连接,即使用using
或try..finally
?
在应用程序运行时,使用perfmon.exe查看性能计数器类别'.Net Data Provider for Sql Server'中的计数器,并检查您正在使用的连接数和池数。如果这种情况持续增长,则表明您正在泄漏连接,这可能会导致此错误。
答案 1 :(得分:0)
该计时器可能是连接管理的内部部分。
你确定你其中一个sp的确实没有一个名为capacity的参数吗?
如果是,你确定它永远不会溢出吗?