首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定的显式和隐式事务

指定的显式和隐式事务
EN

Stack Overflow用户
提问于 2012-11-13 06:28:38
回答 1查看 475关注 0票数 1

我在SQL Server2008中遇到了一个小错误(功能)。

我有一个存储过程,其中我以名称@tran开始显式事务

……declare @tran varchar(30) = 'exp_trans';

如果@p_param为空,则开始TRAN @tran回滚TRAN @tran ....

问题是,当我将IMPLICIT_TRANSACTIONS设置为ON并调用存储过程时,流将命中回滚部分,我将收到错误消息

“消息6401,第16级,状态1,第10行无法回滚exp_tran。找不到该名称的事务或保存点。”

这是某种功能,还是实际发生的事情?提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-13 06:43:00

我认为这是由于嵌套事务造成的,而SQL Server2008在transactions are nested时不支持回滚到内部事务

使用事务名称对一系列嵌套事务中的多个事务进行

命名对事务几乎没有影响。只有第一个(最外层)事务名称在系统中注册。回滚到任何其他名称(有效保存点名称除外)会生成错误。事实上,在发生此错误时,回滚之前执行的任何语句都没有回滚。只有在回滚外部事务时,才会回滚语句。

您的事务是嵌套的,因为隐式事务设置将启动一个事务,而begin trans将启动第二个(嵌套)事务。这会使回滚到命名事务失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13352623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档