关于嵌套事务的问题 如何解决

using (TransactionScope scop = new TransactionScope())

{

    foreach(...)

    {

     //这里循环调用存储过程  存储过程中也有事务

    }

    scop.Complete();

}

这种嵌套事务结果报错了:                EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 1,当前计数 = 0

单独执行一条存储过程的话 是没有错误的``


慕容森
浏览 942回答 2
2回答

一只甜甜圈

估计是执行存储过程的时候出错了,由于在调用代码中没有对异常的处理所以即使存储过程执行出错了,程序也会继续调用存储过程。

慕尼黑8549860

我有碰到过,这种情况,也查了嵌套事物, 其实你只需在每个存储过程中提交你的这个事物即可.  如果你想这几个存储过程用同一个事物,你最好在C#中加上事物即可.  你不是想在不能的存储过程中用一个事物把
打开App,查看更多内容
随时随地看视频慕课网APP