现在公司有个新需求:将sqlserver上新操作的数据同步到Oracle。想用触发器解决。在网上找了资料。
但还是不很清楚,希望有大虾帮我解决这个问题,小妹在这里先谢过了。

解决方案 »

  1.   

    通过ODBC做连接,用触发器或定时作业传送数据.
      

  2.   

    给你点思路:
    1、可以在sql server中创建一张表(如localsynctable)用于数据同步,localsynctable表包含ID(identity)、tablename、operatetype、keyvalue、keyname、status;其中tablename存储表名、operatetype存储操作方式(比如2:INSERT、3:DELETE)、keyname存储表主键、keyvalue存储操作值
    2、然后在要同步的sql server表上创建触发器,对表所作操作触发插入localsynctable表(比如:对A表做插入操作,会在localsynctable表插入一条operatetype=2的记录;对A表做delete操作,会在localsynctable表插入一条operatetype=3的记录;对A表做update操作,会在localsynctable表插入两条记录(一条operatetype=3、一条operatetype=2))
    3、设置job定期同步(一般把同步时间设置在凌晨,避免同步给连接sql server的系统造成太多压力);oracle和sql server数据类型比较不完全相同,只能写程序同步,程序中主要数据类型的转换;比如sql server中的date类型,插入oracle之前要使用TO_DATE函数转换,还有boolean类型,也要做判断(oracle不存在boolean类型,true、false用1、0存储)等等