I would like to start a transaction through a sql procedure, run other 2 procedure, and then run the first procedure with command: 'commit'. Do you believe that this could be possible? I tried but received an error. Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
问问题
382 次
2 回答
0
发生这种情况是因为 SQL Server 并不真正支持嵌套事务。
如果您在嵌套的存储过程(不是事务)中提交或回滚,那么您将生成错误 266,因为启动和输入时 @@TRANCOUNT 不匹配。
您应该在同一个 SPROC 中配对 BEGIN TRAN 和 COMMIT。
如果没有嵌套事务的概念,那么您需要在同一个存储过程中进行回滚/提交。您可以使用 SET XACT_ABORT ON 抑制由不匹配的@@TRANCOUNT 引起的错误 266。
于 2012-05-08T07:49:30.283 回答
-1
不确定 sql server 中的嵌套事务,但你可以试试这个
Begin Try
Begin Transaction1
Call Proc1
Call Proc2
Call Proc3
Commit
End Transaction
Catch
Rollback
于 2012-05-08T08:15:22.510 回答