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();
}
}
Pouvez-vous modifier i nclude votre code qui entoure la transaction entière. – Fung