跨库回滚问题, 返回
Cy1 发布于2023/2/23
try
{
//跨库事务
Db.AsTenant().BeginTran();
//sqlserver 存储过程
var dt = Db.GetConnection(ConfigId.sqlserver).Ado.UseStoredProcedure().GetDataTable("webmes_scll", new { @sourceSql = sourceSql, @billNo = billNo });
//Oracle 插入日志
Db.Insertable(mestok3).ExecuteCommand(); //都是参数化实现
//提交
Db.AsTenant().CommitTran();
return new ActionResult { Status = true, Data = billNo, Message = "生成成功!" };
}
catch (Exception ex)
{
Db.AsTenant().RollbackTran();//数据回滚
return new ActionResult { Status = false, Message = ex.Message };
}
上面是代码,测试回滚发现 Oracle日志生成无问题,但是Sqlserver存储过程生成数据没有发生回滚。
热忱回答(6)
-
fate sta VIP0
2023/2/23var db=Db;
下面全部用db在试一下
0 回复 -
fate sta VIP0
2023/2/23还有存储过程,内部是否有事务
0 回复 -
fate sta VIP0
2023/2/23这样你先不用存储过程,测试,因存储过程里面是可能有问题 ,比如 有已存事务或者 内部用字符串动态拼SQL
0 回复 -
Cy1 VIP0
2023/2/24@fate sta:存储过程里面 没有Begin Tran
0 回复 -
Cy1 VIP0
2023/2/24@fate sta:var db=Db; 我测试一下,测试完回复。
0 回复 -
Cy1 VIP0
2023/2/24@fate sta:var db=Db; 我测试一下,测试完回复。
经实际数据测试,可以回滚,感谢回答
0 回复