如何在多个SQL过程中使用事务?

如何在多个SQL过程中使用事务?,sql,sqltransaction,Sql,Sqltransaction,我想通过一个sql过程启动一个事务,运行另外两个过程,然后使用命令“commit”运行第一个过程。 你认为这可能吗?我试过了,但收到了一个错误。 EXECUTE后的事务计数表示BEGIN和COMMIT语句的数量不匹配。上一个计数为0,当前计数为1。之所以出现这种情况,是因为SQL Server并不真正支持嵌套事务 如果在嵌套的存储过程(非事务)中提交或回滚,则会生成错误266,因为开始和输入时@tracount不匹配 您应该在同一存储过程中将BEGIN TRAN和COMMITs配对 如果没有嵌套

我想通过一个sql过程启动一个事务,运行另外两个过程,然后使用命令“commit”运行第一个过程。 你认为这可能吗?我试过了,但收到了一个错误。
EXECUTE后的事务计数表示BEGIN和COMMIT语句的数量不匹配。上一个计数为0,当前计数为1。

之所以出现这种情况,是因为SQL Server并不真正支持嵌套事务

如果在嵌套的存储过程(非事务)中提交或回滚,则会生成错误266,因为开始和输入时@tracount不匹配

您应该在同一存储过程中将BEGIN TRAN和COMMITs配对


如果没有嵌套事务的概念,则需要在同一存储过程中执行回滚/提交。您可以使用SET XACT_ABORT来抑制由不匹配的@TRANCOUNT引起的错误266。

不确定sql server中的嵌套事务 但是你可以试试这个

Begin Try
 Begin Transaction1
  Call Proc1
   Call Proc2
   Call Proc3
 Commit
 End Transaction
Catch
 Rollback

如果您回滚,则可能的配对副本对您没有帮助。更多信息请参见