"scope"라는 트랜잭션을 롤백하려고하지만 scope2라는 내부 트랜잭션을 롤백해서는 안됩니다. 그러나 그들은 양쪽 다 되돌아 간다! !! TransactionScopeOption.Suppress 옵션이 작동하지 않습니다 ...TransactionScopeOption.Suppress가 있지만 중첩 된 트랜잭션 롤백
이미 DTC를 사용할 수 있으며 Visual Studio 2010과 .net 4.0 및 Microsoft SQl Server 2008을 사용하고 있습니다. 무엇이 잘못 되었습니까 ???
using (SqlConnection conn = new SqlConnection(@"Data Source=.\DEVELOPER;Initial Catalog=TestDatenbank;Integrated Security=sspi"))
{
using (TransactionScope scope = new TransactionScope())
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "UPDATE Orders SET ID='111'";
cmd.ExecuteNonQuery();
using (TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Suppress))
{
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = conn;
cmd1.CommandText = "UPDATE Orders SET OrderName='aaa'";
cmd1.ExecuteNonQuery();
scope2.Complete();
}
//scope.Complete();
}
}
답장을 보내 주셔서 감사합니다.
마침내 작동합니다!
using (SqlConnection conn = new SqlConnection(@"Data Source=.\DEVELOPER;Initial Catalog=TestDatenbank;Integrated Security=sspi"))
{
using (TransactionScope scope = new TransactionScope())
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "UPDATE Orders SET ID='111'";
cmd.ExecuteNonQuery();
using (SqlConnection conn2 = new SqlConnection(@"Data Source=.\DEVELOPER;Initial Catalog=AdventureWorks;Integrated Security=sspi"))
{
using (TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Suppress))
{
conn2.Open();
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = conn2;
cmd1.CommandText = "UPDATE Henrik SET ID='111'";
cmd1.ExecuteNonQuery();
scope2.Complete();
}
}
//scope.Complete();
}
}
하나 개 이상한 것은, 내가이 줄 scope2.Complete()를 삭제할 때; //scope.Complete();를 바꿉니다. scope.Complete();
범위 scope2 다시
하지만 롤백됩니다 실행됩니다 실제로 : 나는 다음과 같은 예상 범위가 scope2도
어떤 아이디어 실행됩니다 실행됩니다 ???????