VB6.0で開発しています。
クライアントにあるアプリケーションから、
サーバー上の異なる2つのデータベースに同時に更新処理を行います。
この際に両方のデータベースが更新に成功するか、失敗するようにしたいと思っています。
私なりに調べてみたところ、これは分散トランザクションというのではないかと
思い、調べてみたところ、以下のサイトにたどり着きました。
http://www.ogis-ri.co.jp/otc/hiroba/technical/DTP/step2/index.html
このサイトの図2のように、それぞれのデータベースに
prepareをして、どちらもOKであれば、それぞれCommitしたいと思いました。
データベースへの接続は
ADODB.Connectionを使用して、ODBCで接続しています。
ADODB.ConnectionのConnectionStringを設定して、Openで接続しています。
トランザクションは、BeginTransで開始して、CommitTransまたは
RollbackTransメソッドで終了しています。
prepareの処理を行いたいのですが、
どのように行えば良いのでしょうか?
もしご存知でしたら、ご教示ください。
よろしくお願いいたします。
参考程度に・・・
まずMSDTCを構成しないと分散トランザクションできなかったと思います。
次に、データベースは何でしょうか?
ADO使っていてもODBCと書いてあるので、DBが何かでODBC経由では、正
しくトランザクションできない場合もありますが・・・
SQL Serverで、ADO.NET(2005/2008)なら、MSDTC構成すれば、正しく動作
するのは確認済みです。
以上。
返事が遅くなってしまい、申し訳ございません。
PCが使えませんでした。
データベースはDB2を使用しています。
MSDTCは構成していないと思います。
MSDTCについては詳しくないのですが、
(調べてみましたが難しかったです。)
これを構成しないとできないのですね?
勉強になりました。
ネットワーク障害などが起こらなければ、
コミットで失敗することはないですよね?
単純にコミットのタイミングを合わせるだけにしようかと思っています。
ご回答ありがとうございました。
DB2でしたか・・・
WindowsではDB2使ったことないもので分散トランザクションができる
かは知りません。ずいぶん昔、IBM OS/2 で、DB2/2をC言語でやった
ことがあるくらいですので。
DB2専用のミドルウェア使った方が速度も機能も確保できるはずです。
VB6からですと、C言語でDLL作ってアクセス・・・と言う方法
になるかも。(IBM提供のものだったかと)
他社製品でVB6から可能なものは、調べればあるかと思いますが。
● ODBC経由と言うことですので、ODBC側バグか制約が無け
れば問題ないかと。
ODBCにはいろいろ問題があったように思いますので、御調べ
になった方がよいと思います。
以上。
ツイート | ![]() |