using (TransactionScope ts = new TransactionScope())
{
using (SqlConnection conn = new SqlConnection(@"XXX"))
{
conn.Open();
SqlCommand sqlCommand = new SqlCommand("UPDATE testtable SET flag=1",conn);
sqlCommand.ExecuteNonQuery();
Thread.Sleep(120000); //因为超时导致的事务中止,在此之前的数据还是会回滚,
//在此之后的数据不会回滚.
//在实际的生产过程中,发生一次事务中止,但数据都回滚了.
sqlCommand = new SqlCommand("INSERT INTO testtable (BH,FLAG,FZ) VALUES('XX',1,'X')", conn);
sqlCommand.ExecuteNonQuery();
}
ts.Complete();
}
本文通过一个具体的示例探讨了使用TransactionScope时遇到的事务超时问题,包括如何通过代码触发事务并在超时情况下观察其行为。具体展示了当事务因超时而中止时,哪些操作会被回滚。
3167

被折叠的 条评论
为什么被折叠?



