我们的代码很简单
using (var context = dbNewsEntities.CreateContext())
{
CheckClient(clientId, context);
var articles = context.GetArticlesForRSS(clientId, 0, ArchiveStartDays, false);
}
随机我们得到sql连接问题。我使用windbg检查SqlConnection,确实池中有100个(默认)连接。
但是,当我使用here描述的方法检查这些连接时,它们都已关闭。 (因为_innerConnection对象是System.Data.ProviderBase.DbConnectionClosedNeverOpened,而不是我们正在做的一些方法。)
如果池中有100个已关闭的连接,会发生什么?我假设c#代码只会选择一个而不是创建一个。我是对的吗?
非常感谢
答案 0 :(得分:0)
很抱歉,现在我意识到我们的代码并不像我放在那里那么简单。
原来,有一些代码隐藏在另一个函数中,但没有正确关闭。 如果帮助任何人,您可以使用:
SELECT
DBID,
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, loginame
要查看数据库中的连接数量,如果未正确捕获实时系统的异常,那么在windbg中,您可以使用
.foreach (ex {!dumpheap -type System.Data.EntityException -short}){.echo "********************************";!pe ${ex} }
这将打印出您需要的异常和堆栈跟踪。