SQL Server通過dblink訪問Oracle資料

hky87發表於2013-01-18
Exec sp_droplinkedsrvlogin ORACLE_demo,Null

Exec sp_dropserver ORACLE_demo

go

EXEC sp_addlinkedserver

        @server ='ORACLE_demo', --要建立的連結伺服器別名

        @srvproduct='Oracle', --產品名稱    

@provider='MSDAORA', --OLE DB 字元

@datasrc='tnsTest'   --資料來源 oracle"ora92"network"admin"tnsnames.ora 檢視

EXEC sp_addlinkedsrvlogin

     'ORACLE_demo', --已建立的連結伺服器名

     'false', -- 固定 */

     NULL, --為每個登陸SQL SERVER的使用者使用此連結伺服器,否則寫使用者名稱 */

     '使用者名稱',

     '密碼'
go

查詢:
SELECT *
FROM OPENQUERY(ORACLE_demo, 'SELECT * FROM table_name')

參考以下內容完成:

SQLSERVER中DBLink

/////////////////////////////SQL SERVER////////////////////////////

Exec sp_droplinkedsrvlogin DBVIP,Null

Exec sp_dropserver DBVIP

EXEC sp_addlinkedserver

      @server='DBVIP',--被訪問伺服器別名

      @srvproduct='',

      @provider='SQLOLEDB',

      @datasrc='Server2'   --要訪問伺服器

EXEC sp_addlinkedsrvlogin

     'DBVIP', --被訪問伺服器別名

     'false',

     NULL,

     'sa', --帳號

     'thankyoubobby' --密碼

Select   *   from DBVIP.pubs.dbo.orders  

/////////////////////////////ORACLE////////////////////////////

需要SQL SERVER伺服器中安裝ORACLE客戶端;

Exec sp_droplinkedsrvlogin demo,Null

Exec sp_dropserver demo

go

EXEC sp_addlinkedserver

        @server ='demo', --要建立連結伺服器別名

        @srvproduct='Oracle', --產品名稱    

@provider='MSDAORA', --OLE DB 字元

@datasrc='ServiceName'   --資料來源 oracle"ora92"network"admin"tnsnames.ora 檢視

EXEC sp_addlinkedsrvlogin

     'demo', --已建立連結伺服器名

     'false', -- 固定 */

     NULL, --為每個登陸SQL SERVER使用者使用此連結伺服器,否則寫使用者名稱 */

     'userid', --帳號

     'password' –密碼

go

SELECT * FROM demo.. USERID.TABLE

--注意用大寫,因為在Oracle資料字典中為大寫

資料庫格式必須是連結伺服器名..ORACLE使用者名稱.表名.

SELECT * FROM OPENQUERY(demo ,'select * from tbdemo' )

UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101')

SET name = 'hello';

INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo')

VALUES ('hello');

DELETE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE name = ''hello''');

如此則在SQL SERVER中就可以訪問ORACLE資料了。

建立連結伺服器可以在企業管理器中看見.

/////////////////////////////ACCESS////////////////////////////

--建立連線伺服器

EXEC sp_addlinkedserver

'ai',             --要建立連結伺服器名稱

‘access',     --產品名稱   

'Microsoft.Jet.OLEDB.4.0', --OLE DB 字元

'd:"testdb"db.mdb' --資料來源 -- 碟符:"路徑"檔名 -- ""網路名"共享名"檔名 (網路版本)

GO

--建立連結伺服器上遠端登入之間對映

--連結伺服器預設設定為用登陸上下文進行

--現在我們修改為連線連結伺服器不需使用任何登入或密碼

exec sp_addlinkedsrvlogin 'ai','false'

go

select * from ai...mytable

/////////////////////////////EXCEL////////////////////////////

--建立連線伺服器

EXEC sp_addlinkedserver

'ai_ex',            --要建立連結伺服器名稱

'ex',     --產品名稱        

'Microsoft.Jet.OLEDB.4.0', --OLE DB 字元

'd:"testdb"mybook.xls' , --資料來源 -- 碟符:"路徑"檔名-- ""網路名"共享名"檔名 (網路版本)

null,

'Excel 5.0' --OLE DB 提供程式特定連線字串

GO

----建立連結伺服器上遠端登入之間對映

--連結伺服器預設設定為用登陸上下文進行

--現在我們修改為連線連結伺服器不需使用任何登入或密碼

exec sp_addlinkedsrvlogin 'ai_ex','false'

go

--查詢資料

select * from ai_ex...sheet3$

/////////////////////////////MS SQL////////////////////////////

--建立連線伺服器

EXEC sp_addlinkedserver

'ai_mssql',        --要建立連結伺服器名稱      

'ms',     --產品名稱

'SQLOLEDB', --OLE DB 字元

'218.204.111.111,3342' --資料來源

GO

--建立連結伺服器上遠端登入之間對映

EXEC sp_addlinkedsrvlogin

'ai_mssql',

'false',

NULL,

'zhangzhe', --遠端伺服器登陸使用者名稱

'fish2231' --遠端伺服器登陸密碼

go

--查詢資料

select * from ai_mssql.pubs.dbo.jobs

--還有一個更簡單辦法

--這種方式在連結伺服器建立後,它是預設開放RPC

--建立連線伺服器

EXEC sp_addlinkedserver

'218.204.111.111,3342', --要建立連結伺服器名稱

'SQL Server' --這裡就用資料來源作名稱

GO

--建立連結伺服器上遠端登入之間對映

EXEC sp_addlinkedsrvlogin

'218.204.111.111,3342',

'false',

NULL,

'zhangzhe', --遠端伺服器登陸使用者名稱

'fish2231' --遠端伺服器登陸密碼

go

--查詢資料

select * from [218.204.253.131,3342].pubs.dbo.jobs

go




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

相關文章