C/S项目
项目大体描述:
一个总店,多个分店每个店都一个数据库
分店缺货的时候,向总店提出提出缺货单
总店发货后,总店的库存量和分店库存量都要修改,这样的话,要同时操作两个数据库,而且两个操作要像事务一样,必须全部完成有什么好的方式能实现?

解决方案 »

  1.   

    客户要求要用多个数据库,如果只是总部用数据库的话,万一总部停电之类的意外情况,分店就无法正常营业了关于数据库分布式方面,没大研究过,能不能大体讲下,或者给些操作也行
    数据库用的是SQL 2000/2005
      

  2.   

    同意 观阴大湿
     服务端 采用 WebServices 提供一个数据接口。每个连锁店  遵循某种协议,就可以调用这个接口了。这样就把 总店和 分店联系起来了。
      

  3.   

    使用分布式事务,首先要启动Windows的DTC服务其次在写 C# 程序时,使用TransactionScope进行事务控制,如                using (TransactionScope transactionScope = new TransactionScope())
                    {
                        try
                        {
                            // 对一个数据库操作
                               ...                        // 对另一个数据库操作
                               ...                        transactionScope.Complete();
                        }
                        catch (Exception ex)
                        {
                            // 进行出错提示或写日志,并关闭两个数据库的连接
                        }
                    }
      

  4.   

    服务器会遇到停电的事么....UPS是干吗的- -b
      

  5.   

    有个问题请教楼主,你的公司主数据库和分店数据是否放在一个局域网内?如果不是,请跳出直接操作两个数据库的思维.网络不能保障,到死只能等死了,加上事务,死得更惨 ^_^如果多个数据库不在同一个网域内,通过xml交换或Web Services交换数据是可优先考虑的办法,千万不要想着各个数据库间的数据即时同步,这样的代价是非常大的,除非你的库装在同一台服务器上.
      

  6.   

    采用消息队列.
    请参考outlook或FoxMail的工作原理.
      

  7.   

    soaringbird的办法很好,我觉得同时还要注意的问题,分库一定要回发消息给主库确认收到消息,主库才能开始更新
      

  8.   

    可以让客户在服务器做vpn
    这样,分店只要连入vpn就可以直接访问数据库
      

  9.   

    这位朋友说得对,可以考虑放弃数据同步的实时性, 因为这样设计的话还不如之间把数据库放在一起. 既然要规避风险, 那还是定时同步数据就可以了. 这样的开发维护成本也会变小.如果多个数据库不在同一个网域内,通过xml交换或Web Services交换数据是可优先考虑的办法,千万不要想着各个数据库间的数据即时同步,这样的代价是非常大的,除非你的库装在同一台服务器上. 
      

  10.   

    看一下COM+的应用,可在组件中应用事务。
      

  11.   

       同意楼上的,这么小的项目一般总公司一个库。这样方便维护。
       你在分店建一个数据库,你看一下需求,他们一般都只是select操作,查看库存出报表啥地,没必要分店也建一个库的
      

  12.   

    总结一下   1 分店确实不需要数据库,只需要调用总部Webservice接口即可
               2 如必须要分店有数据库,也不应该按照总店发货后修改分店库存的模式,难道你能保证每次总店发的货,数量,型号,都跟分店要的一样么,正常的流程应该是总店发货,分店订货状态改变为在途,分店收到货核查无误以后再更改分店库存.
      

  13.   

    1\把店与店间看做不同的系统应用:分店与总店\分店与分店间都使用web 接口来操作,不使用事务2\A店向B店申请某事件C(提货或退货),B店操作后返回结果D给A店3\出现异常时A店通过接口再次查询事件C得到结果D
      

  14.   

    分布式事务了。
    MSDTC最可胜任!