在一个事务中使用了exec sp_executesql @sqlstr 
@sqlstr中的语句不止一条,很多
如果其中某条出错会导致回滚吗
我还有设置
SET XACT_ABORT on

解决方案 »

  1.   

    set xact_abort on 设置会导致严重度 11 - 19 的错误回滚事务,也就是说 sp_executesql 中的语句发生严重度 11 - 19 的错误时事务会自动回滚。如果要让其他严重度的错误也回滚事务,可以通过检查 sp_executesql 过程的返回值实现。begin tran
    declare @r int;
    exec @r=sp_executesql ... ... ;
    if @r<>0 rollback tran;
    commit tran