我想通过sql过程启动事务,运行其他2个过程,然后使用命令'commit'运行第一个过程。 你相信这可能吗?我试过但收到了错误。 EXECUTE之后的事务计数表示BEGIN和COMMIT语句的数量不匹配。先前的计数= 0,当前计数= 1.
答案 0 :(得分:0)
这是因为SQL Server并不真正支持嵌套事务。
如果您在嵌套的存储过程(而不是事务)中提交或回滚,那么由于启动和输入的@@ TRANCOUNT不匹配,您将生成错误266。
您应该将BEGIN TRAN和COMMIT配对在同一个SPROC中。
如果没有嵌套事务的概念,那么你需要在同一个sproc中进行回滚/提交。您可以使用SET XACT_ABORT ON来抑制由不匹配的@@ TRANCOUNT引起的错误266。
答案 1 :(得分:-1)
不确定sql server中的嵌套事务 但你可以尝试这个
Begin Try
Begin Transaction1
Call Proc1
Call Proc2
Call Proc3
Commit
End Transaction
Catch
Rollback