SQL Server建立Linked Server訪問Oracle

abstractcyj發表於2014-02-13
我的本機環境:
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'
還需要對訪問驅動做進一步設定


並在連結伺服器做如下設定:
SQL Server建立Linked Server訪問Oracle

訪問方式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部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-1080915/,如需轉載,請註明出處,否則將追究法律責任。

相關文章