System.InvalidOperationException:内部连接致命错误

时间:2013-02-08 08:27:47

标签: asp.net

我们在.Net 4.0和SQL Server 2008 R2上的登台Web应用程序运行平稳超过2个月。 突然之间,我们开始在应用程序中收到错误说:

  

错误消息:System.InvalidOperationException:内部连接致命错误。      在System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)      在System.Data.SqlClient.SqlDataReader.HasMoreResults()

每当我的数据库查询返回超过700行时,就会出现这种情况。 奇怪的是,我的生产网站(具有与登台相同的代码库)在连接到登台数据库时运行良好。

我尝试将我的登台Web服务器连接到生产数据库(登台数据库的类似副本),我得到了同样的错误。 此错误是相互关联的,有时会加载页面,有时我会收到错误。

如果我将行数减少到小于700,那么页面工作正常。

特定的存储过程只在我的页面中被调用一次。

我做了以下事情:

  1. 修改代码以在使用块中使用命令对象。
  2. 使用完成后立即关闭连接。
  3. 比较暂存和生产IIS服务设置,它们看起来很相似。
  4. 两台Web服务器上都安装了相同的MDAC。
  5. 但没有任何帮助,我仍然在登台Web服务器中收到错误。 该查询在SQL Server Management Studio中运行正常,并且< 3秒。

    任何人都可以建议任何解决方案吗?

    这是调用存储过程的代码库:

            string strSPName = SQLSchema.strSQLSchema + SPNames.<Some SP Name>;
    
    
     using (conn)
        {
    
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = strSPName;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = conn;
            cmd.Parameters.Add(SPParams.<Some Param>, SqlDbType.Int);
            cmd.Parameters[0].Value = <value of Param>;
            conn.Open();
    
            dsSubmitter = new DataSet();
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(dsSubmitter);
            if (dsSubmitter.Tables.Count != 0)
            {
                dsSubmitter.Tables[0].TableName = DALConstants.<Table Name>;
            }
    
            conn.Close();
        }
    

    使用select语句以及主表和详细信息表之间的INNER连接,SP非常简单。主表具有~400行和详细表&gt; 10,000行。 SQL Query返回大约4000行。

1 个答案:

答案 0 :(得分:0)

看起来像SqlAdapter的问题,你为什么不再尝试安装.net框架。

清理解决方案并重建它。