3

私は、IBMによるとサポートされるべきであるDB2データベース(DB2.Netプロバイダーv9.0.0.2およびc#2.0を使用)でTransactionScopeを使用しようとしています。

私はIBMフォーラム(ここなど)で見つけたすべてのアドバイスを無駄に試しました。

XP Sp2マシンでXAトランザクションを有効にし、Win 2003 Serverマシンからも試しましたが、常に悪名高いエラーが発生します。

ERROR [58005] [IBM][DB2/NT] SQL0998N  Error occurred during

トランザクションまたはヒューリスティック処理。理由コード="16"。サブコード="2-80004005"。SQLSTATE = 58005

Windowsイベントログには次のように記載されています。

The XA Transaction Manager attempted to load the XA resource

マネージャーDLL。XAリソースマネージャーDLLのLOADLIBRARYの呼び出しに失敗しました:DLL = C:\ APPS \ IBM \ DB2v95fp2 \ SQLLIB \ BIN \ DB2APP.DLL File = d:\ comxp_sp2 \ com \ com1x \ dtc \ dtc \ xatm \ src \ xarmconn .cpp Line=2467。

また、NETWORKSERVICEユーザーにフォルダーとdllに対する完全な権限を付与しました。

これがMSDTC起動メッセージです

MS DTCは、次の設定で開始しました。

セキュリティ構成(OFF=0およびON=1):トランザクションのネットワーク管理= 0、ネットワーククライアント= 0、ネイティブMSDTCプロトコルを使用したインバウンド分散トランザクション= 0、ネイティブMSDTCプロトコルを使用したアウトバウンド分散トランザクション= 0、トランザクションインターネットプロトコル(TIP) = 0、XAトランザクション= 1

どんな助けでも大歓迎です!

ありがとう、フローリン

4

2 に答える 2

5

きしむような古い IBM DB2 v7 ODBC ドライバーを TransactionScope で動作させることができました。必要なもの:

  • MSDTC プロパティで有効化された XA トランザクション
  • レジストリ キー HKLM\SOFTWARE\Microsoft\MSDTC\XADLL の下に、名前が「DB2CLI.DLL」、値が「C:\PROGRA~1\IBM\SQLLIB\BIN\DB2CLI.DLL」で入力された値 (8.3 形式の dll へのパス) - v9 は DB2APP.DLL を使用)
  • 再起動
  • TransactionScope が破棄される前に接続を閉じない。それは振り返ってみると明らかです。:)

これがあなたの特定のシナリオに関連しているかどうかはわかりません。IBMの資料では、理由コード 16、サブコード 2 が「MSDTC は DB2 接続を登録できません」と示されています。DB2 dll を検出する MSDTC に問題があるようです。上記のレジストリ キーを確認してください。

于 2010-03-26T03:26:00.560 に答える
2

下の画像のように MS DTC を有効にすることで、この問題を解決しました。

  1. dcomcnfgを実行します。
  2. コンポーネント サービス > コンピューター > マイ コンピューター > 分散トランザクション コーディネーター
  3. [ローカル DTC] > [プロパティ] > [セキュリティ] タブを選択します。

DB2 および Informix 用の MS DTC 構成

マシンを再起動して、もう一度やり直してください。最新の IBM ドライバーがあることを確認してください。10.1 フィックスパック 1 と Informix 11.50 でテストしました。

ソース: http://blogs.msdn.com/b/bill/archive/2006/12/12/using-msdtc-between-vista-clients-and-windows-2000-servers.aspx

于 2012-12-21T20:02:09.030 に答える