随机sql连接无法建立问题

时间:2015-10-14 17:00:41

标签: c# sql-server sqlconnection

我们的代码很简单

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#代码只会选择一个而不是创建一个。我是对的吗?

非常感谢

1 个答案:

答案 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} }

这将打印出您需要的异常和堆栈跟踪。