2015-10-14 57 views
0

我们的代码很简单随机SQL连接不能建立问题

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

这将打印出您需要的异常和堆栈痕迹。