嵌套事务(二):SqlServer中嵌套事务使用--事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配 --根本问题

本文介绍了在SQL Server中遇到的嵌套事务问题,特别是关于'BEGIN 和 COMMIT 语句的数目不匹配'的错误。作者通过分析指出,该错误通常发生在嵌套事务中,由于提交或回滚操作改变了事务计数器@@TRANCOUNT。解决方案包括在子事务开始前记录事务计数,并在提交前检查,以避免破坏嵌套事务的平衡。文章还提供了相关事务处理的思考和测试案例。
摘要由CSDN通过智能技术生成

序:老早以前,写过一篇嵌套事务(一):.NET中嵌套事务运用的一点思考

 2011 -12 -2 日 新加部分

 今天又遇见了以前遇到的问题,一个聪明的人不应该将同一个错误出现两次错误,但事实上来,在我身上出了好几次,就其原因是对SqlServer 事务的提交与回滚没有深刻的认识。

问题:

1. System.Data.SqlClient.SqlException (0x80131904): EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。

2. EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 0,当前计数 = 1。

后面的内容,是我之前写的东西,主要是一些测试代码,但是呢,我没有很深入的理解。现在直接说清楚本质的东西,把后面的精华再提上来说。 

  • 提交的事务不能撤销或回滚。
  • 当不存在打开的事务时,@@trancount 等于 0。
  • 执行 begin tran [tranName]语句将 @@trancount 增加 1。<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值