0

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.

4

2 回答 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 回答