本帖最后由 sage425 于 2011-01-13 12:19:41 编辑

解决方案 »

  1.   

    你这个问题好像不是说会滚是否会生效的问题,而是问能不能捕捉到异常.如果是为了捕捉异常,可以在存储过程中回滚后,再用raiseerror再次抛出异常,这样的话,程序里面就又能得到异常信息。
      

  2.   


    如果你的应用程序没有显式地创建一个DBTransaction,那么sql server会自动为每一个sql语句创建一个事务。所以存储过程必定是在事务中的,不需要再写事务(除非,你需要部分地回滚内部的局部的事务,然后继续执行,让顶层的事务“正常”结束。如果要让整个事务回滚,在存储过程中写raiserror语句触发sql server异常就行了,不需要写更多的代码。