[求助]OACLE和SQL Server事务

oktell 2017-09-18 05:02:43
业务场景:
0、ORACLE和SQL Server部署在不同的服务器上;
1、从ORACLE中取出数据至List中;
2、对List数据进行加工处理;
3、将List数据写入Sql Server中,同时对ORACLE写入一“已经处理”的标志。

请问这个业务场景能不能在 一个事务中进行处理?如果可以实现,该怎么实现。

如果在一个事务中不好处理,那么通常这种业务场景该如何处理?谢谢。
...全文
147 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
但是要注意,把多个 using( var tran......) 嵌套起来,这并不是什么“一个事务”的意思!所谓“一个事务”能跨数据库、跨服务器机器、甚至跨不同种类的数据库系统,至少我现在看到的,都是假的空洞的概念,它们都是仅仅提供接口给你,而需要你自己开发接口实现。然后关键是如何实现接口?结果这就成了标题党,你并不能真正保证实现“一个事务”的完备性,你只能退一步用并不是100%可靠地达到事务保护的简单做法(上述假设“失败的概率极低极低的做法)来模拟实现。 实际上,你用两个数据事务操作语句来嵌套在一起就行了,根本不用要什么抽象接口。那些接口是过度地、无实现内容的、不必要的。
  • 打赏
  • 举报
回复
这不是“一个事务”(实际上所谓的 TranXXXXScope根本没用)。当你在代码中把两个事务嵌套,例如写
首先进行你的List的一些计算操作;
using(var tran1= conn1.BeginTransaction())
using(var tran2= conn2.BeginTransaction())
{
    操作tran1;
    操作tran2;
    tran1.Commit();
    tran2.Commit();
}
这时候,只有极低的概率可能让tran1提交而tran2回滚,这个概率极低,因为 Commit 操作本身的可靠性非常非常高,所以这样进行普通的编程就可以了。
ilikeff8 2017-09-20
  • 打赏
  • 举报
回复
一般是自己处理2头的同步问题 你也可以尝试用 TransactionScope分布式事务,以及EF 和linq http://blog.csdn.net/yiqijinbu/article/details/38557761
江南小鱼 2017-09-20
  • 打赏
  • 举报
回复
只需要对SQL SERVER插入数据时使用事务,如果插入成功,再更新ORACLE
  • 打赏
  • 举报
回复
这种情况,放弃使用事务。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧