DOBON.NET DOBON.NETプログラミング掲示板過去ログ

IBMのAS400/DB400のトランザクションについて

環境/言語:[WindowsXp、C#/ASP.NET 2003]
分類:[ASP.NET]

いつもお世話になっております。m(_ _)m

WindowXp SP2にて、
C#/ASP.NET 2003を使用し
IBMのAS400/DB400のデータ更新PGを作成しているが、
そこでトランザクションについて問題が発生しています。

下記のコードで、トランザクションを入れたのに、
エラーも出ずにデータが正常に更新されてしまいます。

※ロールバックが機能しません。


using System.Data.OleDb;

private string test()
{
OleDbConnection con = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
try
{
con.ConnectionString = "Provider=IBMDA400;Data                     Source=XXXXX;User ID=XXXXX;Password=XXXXX";
con.Open();

OleDbTransaction tran = con.BeginTransaction();

cmd = con.CreateCommand();
cmd.CommandText = 実行SQL文;
cmd.Transaction = tran;

cmd.ExecuteNonQuery();
tran.Rollback(); ←---必ずロールバック

return "OK";
}
catch(Exception err)
{
return err.Message.ToString();
}
finally
{
cmd.Dispose();
con.Close();
}
}

なぜエラーも出ずに、ロールバックも機能しないのでしょうか?

どなたか教えていただけますよう、よろしくお願い致します。
IBM AS400/DB400? (DB2じゃないの)へのODBCドライバの
バージョンはいくつでしょうか?

因みに、こんな情報もあります。

http://support.microsoft.com/kb/269735/ja

以上。
■No23760に返信(オショウさんの記事)
> IBM AS400/DB400? (DB2じゃないの)へのODBCドライバの
> バージョンはいくつでしょうか?
説明不足で、申し訳ございません。

バージョンは V5R3 です。
> バージョンは V5R3 です。

  それは、DBのバージョンかと・・・
  ODBC自体のドライバーバージョンなので、
  ODBCデータソースアドミニsトレーター中
  のドライバータブで表示されているものは?

※ 先のURLの内容、確認されましたか?
  IBMのサイトでも『DB400 V5R3 ODBC トランザクション』
  で検索しても8090件ヒットします。

  マイクロソフトのADOのバージョンも関わってきますが、
  IBMに問い合わせるのも必要では?

※ 各種OS・ドライバーのバージョン全て列挙しないとネ〜
  ODBCは結構問題多いので・・・

以上。
あと・・・
DB2 Connect は使えないんですよネ?!

※ ネイティブ DB2 .NET データ・プロバイダーがあるのに
  ODBCだったもので・・・

以上。
いつもお世話になります。

本件解決しましたので、ご報告させていただきます。

■解決方法
AS400側:物理テーブルにジャーナル、ジャーナル・レシーバーを
作成してからジャーナル処理を開始する。

.NET側:Odbc名前空間を使用する。

オショウ様、いろいろアドバイスを頂いてありがとうございました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板