C#db应用程序在清理表时会一直崩溃(?)

时间:2009-07-21 10:50:06

标签: c# database service crash

我有服务/应用程序连接到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)

嗯,事实上,我不使用计时器,(我不确定计时器的确切位置是什么),我无法找到这次崩溃的原因。 你有没有经验/你有没有看到为什么会发生这种情况,以及如何避免它(或忽略它?)。服务的运行时间对我来说至关重要。

2 个答案:

答案 0 :(得分:2)

您是否正确清理了数据库连接,即使用usingtry..finally

在应用程序运行时,使用perfmon.exe查看性能计数器类别'.Net Data Provider for Sql Server'中的计数器,并检查您正在使用的连接数和池数。如果这种情况持续增长,则表明您正在泄漏连接,这可能会导致此错误。

答案 1 :(得分:0)

该计时器可能是连接管理的内部部分。

你确定你其中一个sp的确实没有一个名为capacity的参数吗?

如果是,你确定它永远不会溢出吗?