异构数据库同步问题

      这段时间一直忙于处理数据库同步的问题。由于公司新引进一个OA系统,旧的OA系统一时也不能淘汰,所以需要实现两台服务器的数据库同步。旧OA是基于.Net开发的,用的数据库是SqlServer,新OA是用PHP开发的,用的数据库是MySql。

由于是第一次遇到这种问题,在网上搜索了一下,东西倒是挺多的,自己总结了大概有三种方案:

1、用SqlSever2008(或Sqlserver2005)的SQL Server Business Intelligence Development Studio,在里面新建一个SSIS包等(参考资料:http://blog.csdn.net/zjcxc/article/details/1202876)。同时我还参阅了一些其他资料,通过在SqlServer2005的SQL Server Business Intelligence Development Studio中配置了,倒是可以实现数据库的复制,但要实现同步,这方面的资料自己没有找到,于是看了一本SqlServer2008英文电子书,里面有一些编写SSIS包的简单例子,不过要弄懂自己还欠火候。所以暂时没有采用这种方案。

2、安装一个MySQL ODBC 驱动,我这里安装的是MySQL ODBC 5.1 Driver,在本地计算机上为MySQL建立一个ODBC系统数据源。并且要在SqlServer 2008数据库服务器上创建一个链接数据库

---1、在本地计算机上为MySQL建立一个ODBC系统数据源,选择数据库为TD_OA ,数据源名称为:eis
---2、创建链接数据库
EXEC sp_addlinkedserver    
@server='MySQLTest',   
@srvproduct = 'MySQL',   
@provider = 'MSDASQL',   
@datasrc = 'eis',   
@location = null,   
@provstr = 'DRIVER={MySQL ODBC 5.1 Driver};Server=远程连接的MySQl数据库服务器;Database=数据库;User=用户名;Password=密码;',   
@catalog = NULL
---测试实例 查询
select * from  openquery(MySQLTest,'SELECT * FROM TD_OA.ZStudent')

到这里让我看到了一写希望,在这里可以在SqlServer中用sql语句实现对远程的MySQL数据的操作了。我试了,可以实现插入。

但是要满足双方服务器上的数据库能够同步,我打算写一个触发器实现,就像在在本机的Sqlserver服务器上实现对两个SQL数据库的同步一样(这个之前做了实验,编写的触发器能够顺利执行)。但是在这里编写好触发器之后,总是报一下错误:

问了孟哥,弄了半天没解决。于是找到一个解决方案:http://www.cnblogs.com/chnking/archive/2007/04/04/699891.html

按照解决方案中的说法,又配置了两台服务器的相关地方。忙了半天仍然为了解决,于是又放弃了这个同步方案。

 3、用PHP或者ASP编写脚本。参考资料:http://server.it168.com/server/2005-11-02/20051102005501.shtml

其实自己也查过在ASP.NET中用C#来写一个访问的MySql数据库,但是感觉PHP实现要简单些。于是果断采用PHP编写脚本。

现在终于可以实现从SqlServer 导入数据到MySql数据库上了。现在这个任务还没有圆满结束,先发文总结一下这段时间做的事情。时间仓促,写的不太具体。任务完后会再详细描述。

 

posted @ 2011-09-20 17:51  智客工坊  阅读(728)  评论(1编辑  收藏  举报