- PR -

SQLServerの複数のデータベースにトランザクションをかけたい

1
投稿者投稿内容
AOBA
会議室デビュー日: 2006/03/18
投稿数: 7
投稿日時: 2006-03-18 16:24
JSPでSQLServerの複数のデータベースに対して同時にトランザクションをかけ、どちらかがエラーになった時には、両方ともロールバックをかけるようにしたいのですが、どなたかよい方法をご存知ないでしょうか?
よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-18 16:40
同時にトランザクションをかける、とは同時にコミットする、という意味でしょうか?
たとえばスレッドAとスレッドB、同時にコミットを始めたら片方の失敗を関知することもロールバックすることもできませんので難しそうです。

1. それぞれのスレッドでは「仮です」フラグと識別用のID をつけて insert
2. 追って第三のトランザクションで「仮です」フラグと同じ識別用IDがあったらまとめて「仮です」フラグを下ろす
といった処理はいかがでしょう。
最初から一つのトランザクションにまとめるのがシンプルですが。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-03-18 16:56
SQLServerとJavaの組み合わせで分散トランザクションを行うには、
JTAがいいと思います。

SQLServerとJTAで検索すると、結構ヒントが出ていたりしますよ。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-18 17:13
あぁ、複数スレッド、ではなくて複数のデータベースでしたね。
またまたナナメヨミでとんだ見当違いな発言をしておりました。流してください。

かつのりさんの仰るとおり JTA で 2PC するのが正解ですね。
AOBA
会議室デビュー日: 2006/03/18
投稿数: 7
投稿日時: 2006-03-21 09:26
ありがとうございます。
早速調べてみます。
1

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