我现在有2个服务器中要做数据交换,两边的数据想要基本保持同步。
A服务器,库ADB,table1(id,name,data1,data2,tag)
B服务器,库BDB, table2(id,name,data3,date4,tag)tag内的数据表示1为插入,2为修改,3为删除。现在我想将table2的内容转换到table1中,应该怎么做呢?

解决方案 »

  1.   

    zjcxc(邹建):库名\表名\字段名都是不一样的.这是两个不同系统的数据库.我的目的是,实现两个系统的数据共享.我可以有限地修改这些字段让他们尽量统一.不过完全统一是不可能的.所以做数据的同步交换是很头痛的一件事.不知道有没有很好的解决办法?
      

  2.   

    在服务器A上创建作业
    在作业中调用存储过程sp_addlinkedserver, sp_addlinkedserverlogin建立跟服务器B的连接,
    (具体:
    exec sp_addlinkedserver '自定义ServerB的ServerName','','SQLOLEDB','ServerB的地址'
    exec sp_addlinkedsrvlogin '自定义的ServerB的ServerName_同上','false',null,'登录名','登录密码'
    )
    然后写transact SQL语句处理你需要的插入删除等等操作
      

  3.   

    先为两个数据库建立链接,在写SQL语句或者存储过程干活
      

  4.   

    好的解决方案就是抓紧时间做!
    数据库链接起来,把一些同步的sql语句写进任务,定期执行,不就结了!
    奇怪
    拖了一个礼拜,还在这问
    动手早就弄好了
      

  5.   

    popboyme():
    黑线……
    我都已经做完了才问的好不好。我的方案就是用DTS+作业+触发器
    但个人感觉这种方案做起来麻烦,运行中出错不好调试,做完后不好移植和维护。
    所以才在这里问问看有没有高手有好的解决方案啊。我个人觉得做开发不能光以完成工作为最终目的,而要完成后多做经验总结和跟技术交流,这样才能提高啊。
      

  6.   

    我的具体做法是:将表分为二种,一种为定时提交,主要用DTS和作业。如果发生错误一是忽略,等待下次定时作业,另一种是根据作业的错误提示,手动执行DTS。另一种是即时提交,用触发器和存储过程结合起来。出错后有专门的纠错程序,由系统管理员执行处理。我的这个方案工作量比较大。二个人写了二周多,基本完成,现在还在测试中。欢迎高手批评
      

  7.   

    可以在其中的一个表建触发器,记录下来对表的操作如insert,delete,update.然后定时传到要更新的数据库,然后执行