C#如何进行跨服务器的SQL SERVER的多事务处理?只要一处出错能回滚全部事务...

例如我有两个数据库在不同的服务器,我想将服务器一中某表的数据转移到服务器二的相同结构的表中,我得这样做:新建两个事务:一个为了从服务器一取得数据并删除数据;另一个为了把数... 例如
我有两个数据库在不同的服务器,我想将服务器一中某表的数据转移到服务器二的相同结构的表中,我得这样做:
新建两个事务:一个为了从服务器一取得数据并删除数据;另一个为了把数据插入到服务器二中(事务二嵌套在事务一中),然后
第一步:从服务器一的数据库中select到数据
第二步:插入到服务器二的数据库中
第三步:删掉服务器一中已经转移的数据
就这么简单。
现在的问题是如果事务二已经commit了,而事务一commit的时候出错了,那么数据已经插入到服务器二中而服务器一中却没被删掉。

各位有没有什么办法解决?不需要代码,只要思路就可以,感激不尽。
展开
 我来答
laoshushi520
2012-05-02 · 超过13用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:42.4万
展开全部
第一,两个事物都开启。
第二,将第一个库查询的数据放入数据表中,带入一个方法中(此方法用户将查询到的数据插入第二个库,另外还有第二个事物也作为参数传进来)
第三,删除第一个库中的数据。
第四,提交两个事物
如果有错,两个事物回滚。
追问
问题是两个事务总有一个会先提交,如果后提交的那个出错如何回滚先提交的那个?
追答
不管哪个出错了,只要一出错了两个都回滚了的,(记得用try...两个事物提交catch(){两个事物回滚}finally{关闭连接,释放资源。})
微软idea
2012-05-02 · TA获得超过650个赞
知道小有建树答主
回答量:814
采纳率:0%
帮助的人:522万
展开全部
不就是怕出错,你先把服务器2的表中数据复制一份另命名为Table2,然后把服务器1中的数据复制到Table2中,最后再检查一致性,然后删除服务器2的表,把Table2重命名为服务器2的表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
墨子传人
2012-05-02
知道答主
回答量:32
采纳率:0%
帮助的人:12.5万
展开全部
先执行插入,插入后在执行删除。
更多追问追答
追问
删除的时候失败了要怎么回滚已经插入的数据?就是如果删除失败我也就不插入了。
追答
自定义变量 删除时统计错误 并付给该变量 判断变量,如果变量为空就执行,否则不执行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式