有没有办法在SQL Server 2012存储过程中回滚?

在存储过程中,正在调用几个“更新”sql语句。 如果其中任何一个失败,我想要回滚在同一存储过程中以前执行的更新语句。 有没有办法?

你可以把所有东西都包装在一个开始的tran / end tran中。 从MSDN引用:

BEGIN TRANSACTION表示一个连接所引用的数据在逻辑上和物理上一致的点。 如果遇到错误,则可以回退BEGIN TRANSACTION之后所做的所有数据修改,以将数据返回到这种已知的一致性状态。 每个事务都会一直持续下去,直到它完成而没有错误,并发出COMMIT TRANSACTION以使修改成为数据库的永久部分,或遇到错误,并且所有修改都将用ROLLBACK TRANSACTION语句擦除。

为了回应您的评论,将其与嵌套的Try / Catch结合起来可能适合您。