SQL Server 2008通过LinkServer操作ORACLE
时光荏苒~~
最近项目有需求需要通过SQL Server2008中的数据自动更新到ORACLE中,其实,一开始肯定会想到触发器,因为可以保证实时性。
方案一:
首先,我很确定的一件事情就是MSSQL中的存储过程和触发器可以调用C#编写的dll文件,所以最开始的想法就是在SQL Server中创建表的触发器,然后调用客户端的同步程序(C#, C++,JAVA编写的小程序),这样,可以在客户端程序完成连接Oracle数据库和向里面插入的功能,这种方式虽然可以实现;
基本思路如下:MSSQL触发器==》客户端同步程序==》Oracle CRUD.
这种思路的类似实现方式在几年前的一个项目中使用过,运行效果不错,可以满足客户端获取数据的实时性和高效性。
方案二:
这次主要讨论这种方案,毕竟,总是要尝试新东西(对我来说这种方式目前还没运用到项目中)
首先我在电脑上安装了SQL Server2008 R2 以及Oracle11g,以及PL/SQL Developer,然后接下来操作我用截图进行展示:
第一步:测试oracle的安装是否正确,用 pl/sql developer进行连接,以及创建一张表,默认插入一条数据
第二步:oracle的数据表准备好后,开始SQL Server 2008 R2端创建LINKED SERVER
可以看到,oracle中的一条数据,在SQL SERVER2008 R2端可以查询到,接下来,继续看看insert、update、delete语句的使用语法
完成Insert、update操作后,在PL/SQL developer 中查询下表中的数据,验证下是否操作成功(结果显示是成功的)。
最后,来个删除操作,仔细看下截图中两个不同的删除语法,是不是可以得到一点启发...
一个简单的介绍,结合触发器获取可以实现一些很不错的功能~~~
补充一点:如果是电脑上没有安装oracle,利用SQL Server2008建立链接的时候会发现找不到oraOLEDB.Oracle这个接口,如果是64位的系统,需要安装64位的oracle客户端即可,下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html ,因为我使用的是Oracle11g,所以下载的是win64_11gR2_client,当然,你安装完后,如果你想利用pl/sql developer来建立连接,想必是不行的(plsql developer需要32未的oci.dll),所以可以再复制一个32位的oracle 客户端来帮助你建立连接....
还有,如果在64位的电脑上直接安装32位的oracle客户端,你会发现plsql developer虽然可以正常连接,但是在SQL Server2008的访问接口中找不到oraOLEDB.Oracle,所以一定要注意版本问题!!!
所以,如果你的64位电脑重来没装过oracle的产品,只有Miscrosoft SQL Server2008 ,建议的步骤是:1)安装64位oracle客户端(选择管理员安装模式);2)有时可能需要重启电脑。