我刚刚试过了,订阅服务器里的数据会被还原

解决方案 »

  1.   

    意思是说: 就是改了订阅服务器里面的数据记录也是无用,会被还原成和发布服务器一样的数据
      

  2.   

    当发布数据更新后,订阅服务器会也会被更新的。你所说的无用是: 不能修改,还是修改会被立即更新?
      

  3.   

    当发布数据更新后,订阅服务器会也会被更新的。你所说的无用是: 不能修改,还是修改会被立即更新?
    ------------------------------------------------------
    我是说修改会被立即更新
      

  4.   

    可以的,但我同时操作ACCESS数据库与SQL数据库就报错误:using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Web;
    using System.Web.Services;
    using System.EnterpriseServices;
    using System.Data.SqlClient;
    using System.Data.OleDb;namespace JiangHua
    {
    /// <summary>
    /// 利用web Service与COM+实现分布式事物。
    /// </summary>
    public class Bank : System.Web.Services.WebService
    {    public Bank()
    {

    InitializeComponent();
    } #region 组件设计器生成的代码

    //Web 服务设计器所必需的
    private IContainer components = null;

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if(disposing && components != null)
    {
    components.Dispose();
    }
    base.Dispose(disposing);
    }

    #endregion        // 利用web Service与COM+实现分布式事物。
    [WebMethod(TransactionOption = TransactionOption.RequiresNew)]
    public string MoneyAccessToSqlServer(int money)
        {
    try
    {   //实现一个自动的事物----同步SQLServer 与Access数据库中BANK的内容
        ContextUtil.EnableCommit();
    this.SubAccess(money);            //访问ACCESS数据库
    this.AddSqlServer(money);         //访问SqlServer数据库
    ContextUtil.SetComplete();       //如果扣款与加款都成功     return "转帐成功!";
    }
    catch(Exception e)
    {
                    ContextUtil.SetAbort();        //如果发生异常的就回滚事物。
    return "转帐失败:" + e.Message.ToString();
    }
        } public void SubAccess(int money)         //同步ACCESS数据库
    {
    try
    {
    SqlConnection cnn = new SqlConnection("server=172.17.1.3;uid=sa;pwd=;database=JCard");
    cnn.Open();
    SqlCommand cmd = new SqlCommand("UPDATE Bank Set moneys = moneys + " + money.ToString() + " WHERE id = 1",cnn);
    cmd.ExecuteNonQuery();
    } catch(Exception e)
    {
    throw new Exception("ACCESS失败:" + e.Message.ToString());
    }
        //throw new Exception("操作失败了!");   //手工抛出一个异常
    } public void AddSqlServer(int money)      //同步SQLSERVER数据库
    {
    try
    {
    SqlConnection cnn = new SqlConnection("server=localhost;uid=sa;pwd=;database=JCardOline");
    cnn.Open();
    SqlCommand cmd = new SqlCommand("UPDATE Bank Set moneys = moneys + " + money.ToString() + " WHERE id = 1",cnn);
    cmd.ExecuteNonQuery();
    }
       
    catch(Exception e)
    {
    throw new Exception("SQL失败:" + e.Message.ToString());
    }
    }
    }
    }