0

.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 サイト (ステージングと同じコード ベース) は、ステージング データベースに接続している間は正常に動作します。

ステージング Web サーバーを運用データベース (ステージング データベースの同様のコピー) に接続しようとしましたが、同じエラーが発生します。このエラーは差し迫っており、ページが読み込まれることもあれば、エラーが発生することもあります。

行数を 700 未満に減らすと、ページは正常に機能します。

特定の Stored Proc がページで 1 回だけ呼び出されます。

私は次のことをしました:

  1. usingブロックでコマンド オブジェクトを使用するようにコードを変更しました。
  2. 使用後すぐに接続を閉じる。
  3. ステージングと運用の IIS サーバー設定を比較すると、似ているように見えました。
  4. 同じ MDAC が両方の Web サーバーにインストールされています。

しかし、何の役にも立たず、ステージング Web サーバーでまだエラーが発生します。クエリは SQL Server Management Studio で正常に実行され、3 秒未満かかります。

誰でもこれに対する解決策を提案できますか?

これは、Stored Proc が呼び出されるコード ベースです。

        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();
    }

SP は、select ステートメントと、マスター テーブルとディテール テーブルの間の INNER 結合を使用する非常に単純なものです。マスター テーブルには最大 400 行、詳細テーブルには 10,000 行以上あります。SQL クエリは約 4000 行を返します。

4

1 に答える 1

0

SqlAdapter に問題があるようです。もう一度 .net Framework をインストールしてみてください。

ソリューションをクリーンアップして再構築します。

于 2013-02-15T11:10:55.980 に答える