2009-04-28 13 views
1

複数のシステム間でデータベーストランザクション(レコードの挿入)を試みています。だから、私はSystem.Transaction名前空間を.netで使うことにしました。私は両方のシステムでMSDTCを設定しました(しかし、私は正しく設定されているかどうかはわかりません)。私のトランザクションにはローカルシステムで実行される2つの挿入クエリがあります。もう1つは、ローカルネットワーク内の他のシステムで実行されます。 Message = "トランザクションはすでに暗黙または明示的にコミットまたはアボートされています。"分散トランザクションコーディネーター

この場合はお手伝いしてください。ここで


は私のコードDTCが実際に(ローカルとリモートのシステム上で)実行されていることを

using (TransactionScope txSc = new TransactionScope()) 
    { 
     //vrm = new VolatileRM(); 
     //vrm.SetMemberValue(3); 
     try 
     { 
      using (SqlConnection cn = new SqlConnection(connStr1)) 
      { 
       SqlCommand cmd = cn.CreateCommand(); 
       cmd.CommandText = "Insert into empdetail Values ('YYY')"; 
       cn.Open(); 
       cmd.ExecuteNonQuery(); 
       cn.Close(); 
      } 
      using (SqlConnection cn = new SqlConnection(connStr)) 
      { 
       SqlCommand cmd = cn.CreateCommand(); 
       cmd.CommandText = "Insert into stu Values ('23','senthil')"; 
       cn.Open(); 
       cmd.ExecuteNonQuery(); 
       cn.Close(); 
      }      
      txSc.Complete(); 
     } 
     catch (Exception e) 
     { 
      txSc.Dispose(); 
     } 

    } 
+0

あなたは私に編集できますトランザクション全体を囲むコードを除外します。 – Fung

答えて

2

まずチェックし、それがだかどうかを確認するために「匿名」にDTCの認証の両方を設定してみてくださいアクセス許可の問題

また、リモートマシンとローカルマシンのファイアウォール設定を確認してください。

このFAQをチェックアウト:Distributed Transaction Coordinator(MSDTC) and Transaction FAQこのSO質問に関連

Configuring MS DTC Services

HRESULT: 0x8004D00E using TransactionScope - C#

+0

ありがとう、私はそれを行います – Partha

+1

おかげでミッチ小麦、オフにファイアウォールを設定した後。それは作品です。ありがとうLot – Partha

+1

@ Sarathis1904 Mitchの答えがそれを修正したら、それを答えとupvoteとしてマークしてください。 – Fung