[请教]有关SQL分布式数据同步中的问题

kenter3 2004-11-22 02:41:41
利用sql中的发布和订阅可以使2台sql server数据同步。请问如果我更改了订阅服务器中复制过来的数据,在下次订阅执行后数据是否会被还原?
...全文
258 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jvhmr 2004-12-17
  • 打赏
  • 举报
回复
可以的,但我同时操作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());
}
}
}
}
kenter3 2004-11-24
  • 打赏
  • 举报
回复
当发布数据更新后,订阅服务器会也会被更新的。

你所说的无用是: 不能修改,还是修改会被立即更新?
------------------------------------------------------
我是说修改会被立即更新
Floating 2004-11-23
  • 打赏
  • 举报
回复
当发布数据更新后,订阅服务器会也会被更新的。

你所说的无用是: 不能修改,还是修改会被立即更新?
kenter3 2004-11-23
  • 打赏
  • 举报
回复
意思是说: 就是改了订阅服务器里面的数据记录也是无用,会被还原成和发布服务器一样的数据
Floating 2004-11-22
  • 打赏
  • 举报
回复
你说的还原是指?
kenter3 2004-11-22
  • 打赏
  • 举报
回复
我刚刚试过了,订阅服务器里的数据会被还原
Floating 2004-11-22
  • 打赏
  • 举报
回复
好像不可.
kenter3 2004-11-22
  • 打赏
  • 举报
回复
up
jxzhang615 2004-11-22
  • 打赏
  • 举报
回复
帮顶!!

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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