【问题标题】:random sql connection can't be established issue随机sql连接无法建立问题
【发布时间】:2015-10-14 17:00:41
【问题描述】:

我们的代码很简单

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

非常感谢

【问题讨论】:

  • 你得到的确切异常是什么?

标签: c# sql-server sqlconnection


【解决方案1】:

对不起,现在我意识到我们的代码并不像我放在那里的那么简单。

原来有一些代码隐藏在另一个函数中,没有正确关闭。 如果对任何人有帮助,您可以使用:

SELECT 
  DBID, 
  DB_NAME(dbid) as DBName, 
  COUNT(dbid) as NumberOfConnections,
  loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
  dbid > 0 
GROUP BY 
   dbid, loginame

查看数据库中有多少连接,如果你的live系统的异常没有被正确捕获,那么在windbg中,你可以使用

.foreach (ex {!dumpheap -type System.Data.EntityException -short}){.echo "********************************";!pe ${ex} }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2019-03-11
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    相关资源
    最近更新 更多