Transaction rolled back because it has beenmarked as rollback-only
程序运行出现错误信息,如下图提示

Transaction rolled back because it has been marked as rollback-only
事务已回滚,因为它被标记成了只回滚
发现selectA调用selectB,如果selectB抛出Exception,selectA中捕获Exception但是并不继续向外抛出,最后会出现错误。
纠其原理其实很简单,在selectB返回的时候,transaction被设置为rollback-only了,但是selectA正常消化掉,没有继续向外抛。
那么selectA结束的时候,transaction会执commit操作,但是 transaction已经被设置为 rollback-only了。
所以会出现这个错误。
解决方法:
1- 打开SQL server 数据库
数据库名称 —右键–属性

2-高级–最大文本复制大小 值修改为 -1

当一个事务中的子操作如selectB抛出异常并被父操作selectA捕获但未进一步传播时,事务会被标记为只回滚。这导致selectA在结束时尝试提交事务时发生错误。解决方法涉及调整数据库配置,如改变最大文本复制大小。
9834

被折叠的 条评论
为什么被折叠?



