日期:2014-05-16  浏览次数:20603 次

两个不同数据库数据转移问题。
现在有两个服务器放在不同的地方,分别为数据库A,数据库B。数据库A有历史数据的,而且不断会有新的数据插入更新数据库,而数据库B是空数据库。现在我想把数据库A的历史数据拷贝到数据库B上去,而且还需要每天某个时刻把数据库A新更新或者插入的数据定时转移更新或者插入数据库B,并且数据库A和数据库B的数据库结构有点小小不一样,中间的数据处转换怎么处理?请问有什么好的办法吗?数据库是MS SQL 2008版本以上,先谢谢了。
------解决方案--------------------
用触發器吧.
------解决方案--------------------
写个脚本,定时执行。
要是要求实时的,就用触发器。
------解决方案--------------------
A、B之间是什么网络?带宽多少?
历史库,何不一次性 拷贝压缩过的 备份文件 过去 直接还原?

如果网络不是很好,自己写程序实现定时复制更灵活可控
------解决方案--------------------
引用:
Quote: 引用:

写个脚本,定时执行。
要是要求实时的,就用触发器。

需要每天凌晨12点执行一次吧,写好的脚本是放在哪台服务器上运行呢?


哪台服务器性能好就用哪台!
------解决方案--------------------
引用:
大家好,我是个新手,很多东西都不太懂。大家发表见解的时候可以同时说一下具体的步骤吗?谢谢了,问题解决了一定结贴的。


链接服务器+触发器,实现数据同步:

/*  
  作者:邹建  
  */  
   
  /*--同步两个数据库的示例  
   
  有数据  
  srv1.库名..author有字段:id,name,phone,  
  srv2.库名..author有字段:id,name,telphone,adress  
   
  要求:  
  srv1.库名..author增加记录则srv1.库名..author记录增加  
  srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新  
  --*/  
   
  --大致的处理步骤  
  --1.在   srv1   上创建连接服务器,以便在   srv1   中操作   srv2,实现同步  
  exec   sp_addlinkedserver     'srv2','','SQLOLEDB','srv2的sql实例名或ip'  
  exec   sp_addlinkedsrvlogin   'srv2','false',null,'用户名','密码'  
  go  
   
  --2.在   srv1   和   srv2   这两台电脑中,启动   msdtc(分布式事务处理服务),并且设置为自动启动  
  我的电脑--控制面板--管理工具--服务--右键   Distributed   Transaction   Coordinator--属性--启动--并将启动类型设置为自动启动  
  go  
   
   
  --3.实现同步处理  
   
  --a.在srv1..author中创建触发器,实现数据即时同步  
  --新增同步  
  create   trigger   tr_insert_author   on   author  
  for   insert  
  as  
  set   xact_abort   on  
  insert   srv2.库名.dbo.author(id,name,telphone)  
  select   id,name,telphone   from   inserted  
  go  
   
  --修改同步  
  create   trigger   tr_update_author   on   author  
  for   update  
  as  
  set   xact_abort   on  
  update   b   set   name=i.name,telphone=i.telphone  
  from&nb