思路:通过在sql server数据库中添加链接服务器,可以远程查询oracle数据库的表
环境准备,安装sql server数据库,并安装好oracle驱动,在配置好tnsname文件中配置好oracle连接,本人用的sql server2008 R2,oracle11g测试,提供程序采用的OraOLEDB.Oracle(网上很多文章说这个不能成功,要选择Microsoft OLE DB Privider for oracle,可我选择这个配置成功,估计是不能同时存在两个,如果有两个,sql server默认用微软的)
tnsmae配置如下:
orcl11 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = wilsonpc3 )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl11 ) ) )
首先确保sql server 所在机器通过sqlplus能够正常连接oracle
在sql server链接服务器中添加oracle的访问,命名为Oracl
在SQL Server Management Studio中远程查询oracle数据库
select * from openquery(Oracl,‘select EMPNO ,ENAME ,JOB ,MGR ,HIREDATE ,SAL ,COMM ,DEPTNO from emp‘) a inner join EMP b on a.empno=b.EMPNO and b.EMPNO=7369
openquery 结果相当于返回的是一个远程的表对象,可以当做表去做sql语句的链接操作,也可对oracle数据进行更新删除操作 ,例如下面的代码是对远程的oralcle数据库进行插入操作 :
insert into openquery(Oracl,‘select EMPNO ,ENAME ,JOB ,MGR ,HIREDATE ,SAL ,COMM ,DEPTNO from emp‘) select [EMPNO]+1000 ,[ENAME] ,[JOB] ,[MGR] ,[HIREDATE] ,[SAL] ,[COMM] ,[DEPTNO] from emp
删除操作:
delete from openquery(Oracl,‘select EMPNO ,ENAME ,JOB ,MGR ,HIREDATE ,SAL ,COMM ,DEPTNO from emp‘) where empno=‘7369‘
有了以上的操作方法,sql server与oracle数据互导有了一个基本的思路。
时间: 2024-10-15 07:44:15