为什么我只在一个存储过程中收到此错误“内部连接致命错误”?

时间:2010-10-07 23:50:18

标签: asp.net sql-server sql-server-2005

此问题与此类似。

What Causes "Internal connection fatal errors"

除了它只发生在一个存储过程上并且一直在发生,并且仅在我从我的网站访问此存储过程时才发生。

我甚至在SQL Server中运行了存储过程,它似乎执行得很好。

错误可能是什么?

2 个答案:

答案 0 :(得分:1)

正如消息所说,问题出在与SQL的连接上。

因为它仅发生在一个过程中,所以我的任务是在尝试调用此存储过程之前,您已经保留了一些与数据库的开放连接。

您可以通过打开Perfmon来检查连接,然后查看连接池。 如果它随着时间的推移而增长,那么你就会保持开放的联系。

同时检查您的网络是否稳定,您是在Lan,Wan,Web,本地还是远程?在连接字符串中你使用了什么:127.0.0.1 / localhost /或真正的ip地址?

答案 1 :(得分:1)

这可能已经修复但是......

我使用自己的一些ASP.NET代码遇到了同样的问题。调用SqlDataReader.Close()或SqlDataReader.Dispose()(来自内部类SqlClient.TdsParser)时,会异常抛出异常。

我只需使用SqlConnection.Close()就能解决问题。显然SqlDataReader.Close()是不可靠的。

示例:

if (this._Command != null)
{
  this._Command.Cancel();
  this._Command.Dispose();
}
if (this._Connection.State == ConnectionState.Open)
{
  this._Connection.Close();
}
if (this._DataReader != null)
{
  this._DataReader.Dispose();
}
this._Connection.Dispose();