SQL SERVER连接oracle数据库几种方法
作者:mmseoamin日期:2023-12-21

--1 方式 

--查询oracle数据库中的表 

SELECT * 
FROM OPENDATASOURCE( 
'MSDAORA', 
'Data Source=GE160;User ID=DAIMIN;Password=DAIMIN' 
)..DAIMIN.JOBS

举一反三:在查询分析器中输入:

SELECT * 
FROM OPENDATASOURCE( 
'MSDAORA', 
'Data Source=ORCL;User ID=SYSTEM;Password=manager' 
)..HKDY.S_HD_HKDY

--在sqlserver中创建与oracle数据库中的表同名的表 

select * into JOBS from 
OPENDATASOURCE( 
'MSDAORA', 
'Data Source=GE160;User ID=daimin;Password=daimin' 
)..DAIMIN.JOBS
select * from JOBS

--2、方式 

--在master数据库中查看已经存在的链接服务器 

select * from sysservers
EXEC sp_addlinkedserver 
@server = 'GE160', 
@srvproduct = 'Oracle', 
@provider = 'MSDAORA', 
@datasrc = 'GE160'
exec sp_addlinkedsrvlogin 'GE160', false, 'sa', 'daimin', 'daimin'

--要在企业管理器内指定登录帐号

exec sp_dropserver GE160
select * from GE160..DAIMIN.JOBS
delete from GE160..DAIMIN.JOBS

--备注:引用ORACLE服务器上的表时,用户名称与表名一定要大写字母

SELECT * 
FROM OPENQUERY(GE160, 'SELECT * FROM DAIMIN.JOBS')

--3、方式 

SELECT a.* 
FROM OPENROWSET('MSDAORA', 
'GE160';'DAIMIN';'DAIMIN', 
DAIMIN.JOBS) AS a 
ORDER BY a.JOB_ID

--4、方式 ODBC 

--ODBC方式比较好办 

SELECT A.* 
FROM OPENROWSET('MSDAORA','GE160';'DAIMIN';'DAIMIN', --GE160是数据源名 
DAIMIN.JOBS) AS A 
ORDER BY A.JOB_ID