- - PR -
分散(手動)トランザクションの不具合について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-06 15:52
あるプロシージャを実行中に
「手動または分散トランザクションモードのため、新規接続を作成できません。」 というエラーが発生しました。 そのプロシージャには レコードセットをオープンしたまま レコードセットを1レコード読むごとに 別のテーブルを更新するという処理があるのですが その処理が影響しているのでしょうか? なお、開発アプリケーションはVB6.0、 データベースはSQL SERVER 2005です。 以下にソースの概略をあげておきます。 'ここでレコードセットRSを作成 strSql=(SELECT文) If DB_Select(PROGRAM_ID, "USER", "RS", strSQL, False) = False Then Exit Sub End If 'RSが末尾になるまで処理を続ける Do Until RS.EOF 'RSの内容を読み込み、worktableにレコードをINSERTする strSQL= (INSERT文) If DB_Execute(PROGRAM_ID, "USER", strSQL) = False Then Call DB_Rollback("USER") Exit Sub End If RS.MoveNext Loop 'RSを閉じる Call RS_Close(PROGRAM_ID, "RS") '別のRSを作成 strSQL=(SELECT文) If DB_Select(PROGRAM_ID, "USER", "RS", strSQL, False) = False Then Exit Sub End If 'RSの末尾まで処理を続ける Do Until RS.EOF '項目とデータのペアが20あって、条件によってworktableの更新を行う For int項目 = 1 To 20 'ここでworktableをUPDATE(場合によって更新する列が異なる) Select Case Nzs(RS("控除項目" & Format(int項目, "00"))) Case gstr控除項目コード健康保険 If Worktable_Update("数値項目8", int項目) = False Then Exit Sub End If Case gstr控除項目コード介護保険 If Worktable_Update("数値項目9", int項目) = False Then Exit Sub End If Case gstr控除項目コード厚生年金 If Worktable_Update("数値項目10", int項目) = False Then Exit Sub End If Case gstr控除項目コード雇用保険 If Worktable_Update("数値項目11", int項目) = False Then Exit Sub End If Case gstr控除項目コード所得税 If Worktable_Update("数値項目12", int項目) = False Then Exit Sub End If End Select Next 'WORKTABLEをUPDATE strSQL=(UPDATE文) If DB_Execute(PROGRAM_ID, "USER", strSQL) = False Then Call DB_Rollback("USER") Exit Sub End If RS.MoveNext Loop 'RSを閉じる Call RS_Close(PROGRAM_ID, "RS") 'ワークテーブルをコミット Call DB_Commit("USER") [ メッセージ編集済み 編集者: 納涼床 編集日時 2007-11-06 15:55 ] |
1