0

我有一个程序如下

BEGIN TRY
BEGIN TRAN
...transactins A....
   BEGIN TRY
   .... Transaction B ....
   END TRY
   BEGIN CATCH
   .... Set variables and print messages ....
   END CATCH
....Transaction C
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
...Transaction D
END CATCH

事务 B 正在引发错误,因此该进程将进入不可提交状态并引发以下错误。我检查了 XACT_STATE() 值为 -1

消息 3930,级别 16,状态 1,过程 xxxxxxxx,第 70 行当前事务无法提交,并且无法支持写入日志文件的操作。回滚事务。

有没有其他方法可以通过跳过事务 B 并执行事务 C 来解决这个问题

4

1 回答 1

1

使用事务的全部意义在于,其中的操作要么全部成功,要么全部失败。如果您想Transaction C从 的失败的影响中分离出来Transaction B,那么对每个都使用单独BEGIN TRAN/COMMIT/ROLLBACK的操作。

于 2011-11-10T16:39:01.713 回答