2009-04-28 8 views
1

J'essaie de faire une transaction de base de données (insertion d'enregistrements) sur plusieurs systèmes. J'ai donc décidé d'utiliser System.Transaction Namespace dans .net. J'ai configuré MSDTC sur les deux systèmes (mais je ne sais pas si j'ai configuré correctement). Ma transaction a deux requêtes d'insertion que l'on va exécuter au niveau du système local. un autre, exécutera à un autre système dans un réseau local. La première requête d'insertion fonctionne correctement, mais la deuxième génère une erreur comme: Message = "La transaction a déjà été implicitement ou explicitement validée ou annulée."Coordinateur de transactions distribuées

S'il vous plaît aider dans ce cas à venir.


Voici mon code

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

Pouvez-vous modifier i nclude votre code qui entoure la transaction entière. – Fung

Répondre

2

d'abord vérifier que le DTC est en fait en cours d'exécution (sur le système local et à distance), puis essayez de définir l'authentification de DTC à « anonyme » pour voir si elle est un problème d'autorisations.

Vérifiez également les paramètres du pare-feu sur la machine distante et locale.

Vérifiez cette FAQ: Distributed Transaction Coordinator(MSDTC) and Transaction FAQ

Configuring MS DTC Services

associés à cette question SO: HRESULT: 0x8004D00E using TransactionScope - C#

+0

Merci, je vais le faire – Partha

+1

Merci Mitch Blé, Après avoir mis le pare-feu à off. C'est un travail. Merci Lot – Partha

+1

@ Sarathis1904 Si la réponse de Mitch l'a corrigé, alors marquez-la comme réponse et upvote. – Fung

Questions connexes