ADO.net でSQLサーバー(SQL Server 2005 Express Edition)に接続した、

ASP.netのWebアプリケーションで、下記のエラーが多発して困っています。

「System.Data.SqlClient.SqlException: サーバーはトランザクションを再開できませんでした。説明: 4500000284。
このセッションでアクティブなトランザクションが、別のセッションによりコミットまたは中止されました。」

タイミング的には、アクセス負荷が高まったときに発生しているようなのですが、
そもそも、直接な原因として、どういう場合に上記のエラーが発生するのかが分かっていないため、
どう対処すればいいか見当がつかない状態です。

このエラーの発生原因・対処法について、何らかの情報があれば提供お願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2011/01/25 12:10:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:windofjuly
    うぃんど 2011/01/18 17:25:58
    >ASP.netのWebアプリケーション
     
    そのアプリケーションの基本設計が悪いか、あるいは造りが悪い
    あるいは、そのアプリケーションの仕様が実情と合っていない
    ハードウェアやOSの処理限界などもあるかもしれない
     
    総合的に見ていかないといけないから、誰も答えられない
    (難しい問題なので、なんちゃって回答者が寄り付いていないのが不幸中の幸いかもしれない)
     
    お立場によって下記のような対応がまず第一となるでしょう
    Webアプリケーションを作成している立場であるならば、
    「1トランザクションを出来るだけコンパクトに実行できるように見直し」
    Webアプリケーションを利用している立場であるならば、
    「ソフトウェア、ハードウェアの仕様上の限界と実際の限界についての情報収集」
     
    以上、ざっくりとしか書けないのでコメントにしておきます
  • id:khazad-Lefty
    えっと。恥ずかしながら作成者の方です。

    >そのアプリケーションの基本設計が悪いか、あるいは造りが悪い
    正直私もそう思うんですよね…。

    >総合的に見ていかないといけないから、誰も答えられない
    たしかに根本的な解決(対症療法含めても)はこの情報でアドバイスするのは難しいでしょうし、
    ただ、総合的に判断できるような情報を出すというのはプログラムの基本部分を公開する必要があるため
    今回のプロジェクトでは難しいというのが正直なところです。

    なので、上記エラーの「直接的な」原因が分かればプログラム見直しの手助けになるかなという
    思いで今回の質問を行っています。

    とりあえず
    > Webアプリケーションを作成している立場であるならば、
    > 「1トランザクションを出来るだけコンパクトに実行できるように見直し」
    を再度確認しようかと思います。
  • id:windofjuly
    うぃんど 2011/01/19 14:47:02
    「原因が複数あるタイプのエラー」のため、直接的な原因を示唆するためには、プログラムの基本部分まで言及するかもしれませんね
    いいかげんなものでよければ、OSやサーバーの構成、クライアントの数、更新系か参照系(更新系だと思ってます)などの大まかな概要でも答えをある程度絞れるかもしれませんが、それとても結果的に深い部分にまで言及することになるかもしれませんので、いずれにしても詳しい部分を表に出すことになろうかとは思います
     
    トランザクションの見直しを行うにあたって、既にやっておられるかもしれませんが、せめてもの追加ヒントとして次のように切り分けることだけを追記しておきます
    (1)エラーは出るけれどデータは正しくコミットされている
      自動でコミットされてしまう原因を探りをいれる
    (2)エラーの出たときのセッションは中止され、データベースにデータは反映されない
      どのアプリがセッション切れを起こす要因になっているかなどから探りをいれる

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません