|zyciis| 用WebService更新数据的时候如何保证数据库的数据完证性 谢谢 急 写得简单一点

zyciis70 2009-02-20 12:32:19
环境:
A网站有A数据库 用于用户在网上下订单
B服务器有B数据库,用于保存在和个地区的订单汇总

方法:

启动事务
if(本地更新)
{
如果本地更新成功,通过services更新b服务器
if(services更新成功)
返回更新成功信息,
根据服务器返回数据再提交本地更新
//在这里再次提交本地更新的时候,出错了,这时就会让本地回滚,但WebService已经提交了 怎么回滚?
else
本地回滚

}
else
{
不成功,则services不调用
}
...全文
106 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
milozy1983 2009-02-20
  • 打赏
  • 举报
回复
建张新表作为webservices的提交日志,然后根据日志做相应回滚。
我不懂电脑 2009-02-20
  • 打赏
  • 举报
回复
涉及到2个数据库这是分布式事务,需要COM+服务才能支持。
ZZJ_4Ever 2009-02-20
  • 打赏
  • 举报
回复
up
shalen520 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zyciis71 的回复:]
RE:作为异常分支,记录或者标记一下,然后用其他方式如人工来处理
------------------------------------------------
记录下来,人工处理,好像不太现实啊
程序上就不能回滚掉刚才的WebService

谢谢
[/Quote]

可以在B上提供一个回滚的webservice,问题是,如果此时回滚服务器B也不成功怎么办?

这种分布式的事务,如果无法再同一个事务上下文中处理,那么就只能采用写日志/事务补偿等方式处理
冷月孤峰 2009-02-20
  • 打赏
  • 举报
回复
不在一个事务中没办法!
zyciis71 2009-02-20
  • 打赏
  • 举报
回复
RE:作为异常分支,记录或者标记一下,然后用其他方式如人工来处理
------------------------------------------------
记录下来,人工处理,好像不太现实啊
程序上就不能回滚掉刚才的WebService

谢谢
shalen520 2009-02-20
  • 打赏
  • 举报
回复
作为异常分支,记录或者标记一下,然后用其他方式如人工来处理
zyciis70 2009-02-20
  • 打赏
  • 举报
回复


RE
------------------------
楼上的两位看清楚我的问题啊
我的问题不是更新WebService出错怎么办,
我是说WebService成功后,再去更新本地,而本地这时个出错要回滚
那WebService那边已经提交的怎么回滚

谢谢


huguosheng_89412 2009-02-20
  • 打赏
  • 举报
回复
如果本地出现了错误,如何回滚服务器的呢?
try
{
根据服务器返回数据再提交本地更新
string isSuccess = MyServices(); //MyServices种启动事务处理,
if(!isSuccess )
{
本地回滚
}
}
catch
{
本地回滚
}
milozy1983 2009-02-20
  • 打赏
  • 举报
回复
在调用webservices的时候加个try catch用如下形式

bool isSuccess = true;
try
{
string result = MyServices();
}
catch
{
isSuccess = false;
}

if (isSuccess)
{
根据服务器返回数据再提交本地更新
}
else
{
本地回滚
}

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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