日期:2014-05-18  浏览次数:20500 次

|zyciis| 用WebService更新数据的时候如何保证数据库的数据完证性 谢谢 急 写得简单一点
环境: 
A网站有A数据库 用于用户在网上下订单 
B服务器有B数据库,用于保存在和个地区的订单汇总 

方法:

启动事务
if(本地更新) 

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

else 

  不成功,则services不调用 
}

------解决方案--------------------
在调用webservices的时候加个try catch用如下形式

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

if (isSuccess)
{
根据服务器返回数据再提交本地更新 
}
else
{
本地回滚 
}
------解决方案--------------------
如果本地出现了错误,如何回滚服务器的呢?
try
{
根据服务器返回数据再提交本地更新 
string isSuccess = MyServices(); //MyServices种启动事务处理,
if(!isSuccess )
{
本地回滚 
}
}
catch
{
本地回滚 
}
------解决方案--------------------
作为异常分支,记录或者标记一下,然后用其他方式如人工来处理
------解决方案--------------------
不在一个事务中没办法!
------解决方案--------------------
探讨
RE:作为异常分支,记录或者标记一下,然后用其他方式如人工来处理
------------------------------------------------
记录下来,人工处理,好像不太现实啊
程序上就不能回滚掉刚才的WebService

谢谢

------解决方案--------------------
up
------解决方案--------------------
涉及到2个数据库这是分布式事务,需要COM+服务才能支持。
------解决方案--------------------
建张新表作为webservices的提交日志,然后根据日志做相应回滚。