- PR -

トランザクションのコミットでエラー

1
投稿者投稿内容
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2003-10-16 19:19
お世話になっております。
VS2003 C# + ASP.NET
SQLServer2000
で開発しています。

CSVファイルの内容をDBに格納する処理で
一行づつをトランザクションとして
SqlTransaction.Commit()
で登録しています。
普段は問題なく動作するのですが、
大量データを複数のクライアントから同時実行すると
SqlTransaction.Commit()
で例外が発生することがあります。
例外の発生状況はランダムで同一データでテストしても
毎回、例外が発生するデータ、件数とも変化します。

例外の内容は
3902:COMMIT TRANSACTION 要求に対応する BEGIN TRANSACTION がありません。

です。
さらに分からないのは例外が発生しているにもかかわらず。
データは全て正常に登録されています。(コミットが失敗しているはずのデータも登録されている)

バグだと思いMSのページで検索したのですが、情報は得られませんでした。
どなたかこの現象について知っておられる方はいらっしゃいますでしょうか?
よろしくお願いいたします。
たるたる
会議室デビュー日: 2003/09/29
投稿数: 16
投稿日時: 2003-10-16 21:36
引用:
さらに分からないのは例外が発生しているにもかかわらず。
データは全て正常に登録されています。(コミットが失敗しているはずのデータも登録されている)


例外が発生する理由はわかりませんが、
BeginTransactionがかかっていない状態で
SQLを実行すると、即時DBへ更新されてしまいます。
ですので、SqlTransaction.Commit() で例外が発生する前に正常に更新されています。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2003-10-17 11:58
たるたる様レスありがとうございました。
相変わらず、なぜ例外が発生するかはわかっていませんが
(SqlConnection.BeginTransaction()は成功してるので。。。)
コミットが失敗しているのにInsertが成功している理由については
たるたる様のおっしゃる通りだと思います。
もうすこし調査しようと思います。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)