我想回滾一個名爲「範圍」,但內部事務命名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也將執行
任何想法???????