日期:2014-05-18  浏览次数:20386 次

同一服务器两个不同数据库之间数据的同步(两库中的表名,字段名不一样)在线等待----
查了一圈帖子,头也大了,还是没找到很合适的方法
请大家帮我分析下,谢谢了
--------------
同一台机子两个不同数据库之间,假设a库和b库,他们中有大概20个表需要数据同步
我以两库其中一个表为例,a库中表table1(字段1,字段2...),b库中的表table2(字段3,字段4....).注意:table1,table2他们表名和字段名都不相同,但我需要把他们中一些字段的数据同步。

这样估计就不能用复制功能了,因为结构都不一样。
看到了网上这种问题很多建议使用触发器,在这里想详细的问一下:

触发器是a库有数据插入或更新,b库也跟着同样操作,这个原本可以满足,但是有个问题,a库中有很多历史数据,b库是新库,这是不是只能保证新插入的数据同步,历史数据我怎么让他也全部到b库,另外这样20个表同步每个都写触发器,这样效率会不会受影响?

求求大家了,项目很急哦,总的来说就是这样子:
把a库的表历史数据全部插入到b库,并且a库表新增的数据也同步到b库表,a库表中这些历史数据以及新来数据怎么样才能完全毫无遗漏的搬到b库表中?

在线等待,请大家仔细看了在解答,不要复制一堆就走人哦,提出一个好的解决问题的办法,谢谢大家了




------解决方案--------------------
可以先把历史数据insert into 再用触发器同步
或用共用一表
写个视图等

------解决方案--------------------
1.先把数据插入到B库BB表(其他表一样)
insert into B..BB(col1,col2....) select col1,col2... from AA
2.在A库AA表中做个触发器(需要同步数据的表都做).
一旦有数据插入,就把数据同时插入到B库BB表中.
字段名选则好.

create trigger my_trig on AA for insert
as
insert into B..BB(col1,col2....) select col1,col2... from AA
go