我的本机环境:
SQL Server 2008R2 64位
Oracle 12c 64位
SQL Server端执行以下脚本:
exec sp_addlinkedserver @server='LINK2ORACLE', @srvproduct='Oracle', @provider='OraOLEDB.Oracle', @datasrc=N'ORCL'
exec sp_addlinkedsrvlogin @rmtsrvname=N'LINK2ORACLE',@useself=N'False',@locallogin=NULL,@rmtuser=N'scott',@rmtpassword='tiger'
还需要对访问驱动做进一步设置
并在链接服务器做如下设置:
访问方式1:select * from LINK2ORACLE..SCOTT.DEPT
注意表名,链接服务器名,用户名都应该大写
访问方式2:select * from openquery(LINK2ORACLE,'select * from emp')
暂时没有找到支持查询条件的的方式。以下SQL不能执行
declare @sql varchar(2000)
set @sql = 'select * from emp where deptno=10'
print @sql
select * from openquery(LINK2ORACLE,@sql)
需要改成动态SQL执行:
set quoted_identifier off
declare @sql nvarchar(1000),@mobile nvarchar(10)
set @deptno='10'
set @sql="select * from OPENQUERY(LINK2ORACLE,'select * from emp where deptno=''"+@deptno+"''')"
exec sp_executesql @sql
参考:
http://blogs.msdn.com/b/bindeshv/archive/2008/05/21/demystifying-sql-oracle-distributed-query-issues.aspx
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8520577/viewspace-1080915/
,如需转载,请注明出处,否则将追究法律责任。