sqlserver採用link server方式遠端連線ORACLE

germany006發表於2016-05-20

ITPUB居然不讓上傳圖片了,上傳的圖片都是空白看不見,無奈只能用文字描述
方法一:
1、SQLSERVER資料庫所在伺服器需安裝ORACLE客戶端(完整安裝也可以)

2、配置ORACLE客戶端TNS,例子如下:
修改tnsnames.ora檔案,配置如下:

testdb_qa =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.4)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = testdb)
    )
  )


3、採用windows身份驗證方式登入SQLSERVER

4、配置SQLSERVER的LINK SERVER
常規:

連結伺服器:testdb_qa(任意命名)
訪問介面:ORACLE provider for ole db
產品名稱:ORACLE
資料來源:testdb_qa(與tns的別名一致)
訪問介面字串:user id=test;password=test(oracle中的使用者密碼,能夠遠端登入的)

安全性:
選擇使用此安全上下文建立連線:
test
test
(oracle中的使用者密碼,能夠遠端登入的)

點選確定即可完成配置

5、執行SQL時一定要記住選擇可用的資料庫進行,如ZWL,TESTDB反正不要那個系統資料庫就是了
SELECT * FROM OPENQUERY(testdb_qa,'SELECT sysdate FROM dual');
能查出資料即配置成功

6、如果訪問時報錯,使用以下方法
比如報錯內容:

無法建立連結伺服器XXXXX的 OLE DB 訪問介面OraOLEDB.Oracle的例項。 (Microsoft SQL Server,錯誤7302)


  1. 按下WIN+R,開啟“執行”視窗,輸入“regedit”,回車。
  2. 在開啟的登錄檔編輯器的左側按如下路徑依次展開:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers

    在Providers下面一般來說是看不到OraOLEDB.Oracle這一項的,於是新建這一項。

    在Providers上面右鍵選擇New -> Key,把新增加的項改名為“OraOLEDB.Oracle”

  3. 為“OraOLEDB.Oracle”這個鍵新增一個DWORD Value,把名字改為“AllowInProcess”


  4. 把“AllowInProcess”的值改為“00000001”

    修改即刻生效,現在就可以再去訪問連結伺服器上的Oracle資料庫了。





方法二:
直接執行以下程式碼即可:
(1)自定義命名,比如統一命名為TEST
(2)user id,可以連線ORACLE資料庫的使用者名稱,password就是該使用者名稱
(3)datasrc要填寫SQLSERVER機器上TNSNAMES.ORA的別名,可參考方法一中的第二大點配置ORACLE客戶端TNS

EXEC master.dbo.sp_addlinkedserver @server = N'自定義命名TEST', @srvproduct=N'Oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'TNSNAMES.ORA填寫的別名', @provstr=N'user id=scott;password=tiger'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'自定義命名TEST',@useself=N'False',@locallogin=NULL,@rmtuser=N'scott',@rmtpassword='tiger'


GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'collation compatible', @optvalue=N'false'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'data access', @optvalue=N'true'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'dist', @optvalue=N'false'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'pub', @optvalue=N'false'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'rpc', @optvalue=N'false'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'rpc out', @optvalue=N'false'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'sub', @optvalue=N'false'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'connect timeout', @optvalue=N'0'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'collation name', @optvalue=null
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'lazy schema validation', @optvalue=N'false'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'query timeout', @optvalue=N'0'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'use remote collation', @optvalue=N'true'
GO


EXEC master.dbo.sp_serveroption @server=N'自定義命名TEST', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-2103769/,如需轉載,請註明出處,否則將追究法律責任。

相關文章