用Sqltansaction对存储过程有用么?

解决方案 »

  1.   

    有用...参考:
    http://www.cnblogs.com/zhenyulu/articles/330494.html
    将执行 sql语句的地方 换成Proc就可以了
      

  2.   

    using(SqlConnection con = new SqlConnection(""))  
     {   
      con.Open();  
      SqlTransaction myTran = con.BeginTransaction();  
      SqlCommand myCom = new SqlCommand("",con);  
      try  
      {  
      myCom .CommandType=CommandType.StoredProcedure
      myComExecuteNonQuery();  
      myTran.Commit();  
      }  
      catch (Exception Ex)  
      {  
      myTran.Rollback();  
      }  
      finally  
      {  
      con.Close();  
      }  
    }
      

  3.   

    怎么有人说SQltansaction只对SQL语句有用呢
      

  4.   

    为什么不在Procedure中直接使用Transation呢?
    不是舍近求远吗?
      

  5.   

    呵呵,你有没有想过,如果sp执行异常(包括执行结果不正确)的话,事务回滚吗?事务无论在代码里还是在sqlserver上都存在这样的问题,
    也包括像sql触发器这样的系统级事务也是不可靠的(不可靠的原因是由于写入了代码,代码的执行可能会出问题,而不是触发器本身不可靠)
    一些多步操作可以通过设计阶段的合理设计转换成单步操作,
    还有一些多步操作客户不需要回滚,只是程序设计者一厢情愿从单纯的技术角度臆断的总之,尽量避免使用事务
      

  6.   

    程序里 与 SQL存储过程 都可以加事物