- - PR -
トランザクションのコミットでエラー
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-10-16 19:19
お世話になっております。
VS2003 C# + ASP.NET SQLServer2000 で開発しています。 CSVファイルの内容をDBに格納する処理で 一行づつをトランザクションとして SqlTransaction.Commit() で登録しています。 普段は問題なく動作するのですが、 大量データを複数のクライアントから同時実行すると SqlTransaction.Commit() で例外が発生することがあります。 例外の発生状況はランダムで同一データでテストしても 毎回、例外が発生するデータ、件数とも変化します。 例外の内容は 3902:COMMIT TRANSACTION 要求に対応する BEGIN TRANSACTION がありません。 です。 さらに分からないのは例外が発生しているにもかかわらず。 データは全て正常に登録されています。(コミットが失敗しているはずのデータも登録されている) バグだと思いMSのページで検索したのですが、情報は得られませんでした。 どなたかこの現象について知っておられる方はいらっしゃいますでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2003-10-16 21:36
例外が発生する理由はわかりませんが、 BeginTransactionがかかっていない状態で SQLを実行すると、即時DBへ更新されてしまいます。 ですので、SqlTransaction.Commit() で例外が発生する前に正常に更新されています。 | ||||
|
投稿日時: 2003-10-17 11:58
たるたる様レスありがとうございました。
相変わらず、なぜ例外が発生するかはわかっていませんが (SqlConnection.BeginTransaction()は成功してるので。。。) コミットが失敗しているのにInsertが成功している理由については たるたる様のおっしゃる通りだと思います。 もうすこし調査しようと思います。ありがとうございました。 |
1