複数のシステムでデータベーストランザクション(レコードの挿入)を行おうとしています。そこで、.netでSystem.Transaction名前空間を使用することにしました。両方のシステムでMSDTCを構成しました(ただし、正しく構成したかどうかはわかりません)。私のトランザクションには2つの挿入クエリがあり、1つはローカルシステムで実行されます。もう1つは、ローカルネットワーク内の他のシステムで実行されます。最初の挿入クエリは正常に機能しますが、2番目の挿入クエリは次のようなエラーを発生させます。メッセージ="トランザクションはすでに暗黙的または明示的にコミットまたは中止されています。"
これが私のコードです
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();
}
}