Oracle SQLServer中實現跨庫查詢

2021-05-11 16:42:10 字數 2742 閱讀 5184

oracle&sqlserver中實現跨庫查詢

一、在sqlserver中連線另乙個sqlserver庫資料

在sql中,要想在本地庫中查詢另乙個資料庫中的資料表時,可以建立乙個鏈結伺服器:

exec

master.dbo.

sp_addlinkedserver @server = n'別名'

,@srvproduct=n'庫名'

,@provider=n'sqloledb'

, @datasrc=n'

伺服器位址'

exec

master.dbo.

sp_addlinkedsrvlogin @rmtsrvname = n'別名'

,@locallogin =

null

, @useself = n'false'

, @rmtuser = n'

使用者名稱'

,@rmtpassword = n'密碼'

建立完後,就可以通過「

select * from

別名.庫名.dbo.表名」來查詢了。

或者也可以手工建立:

二、在oracle中連線另乙個oracle庫資料

在oracle中,其實也類似,要連線到其他庫時,也需要建立乙個類似這樣的連線:

create database link別名connect to 模式名(使用者名稱)identified by "密碼"using 'tns名';

注意:這裡面的tns名就是你需要連線的另乙個庫的tns名,而且是必需是在你當前連線的庫的伺服器端所配置的tns名。

建立完後,我們也就可以訪問了:「

select * from

表名@別名」

如果使用的是pl/sql開發工具,那麼我們也可以直接在工具裡建立:

三、在sql server中連線oracle資料

同樣,也建立乙個資料庫連線即可,這時我們採用ole db方式連線資料庫:

exec

master.dbo.

sp_addlinkedserver @server = n'別名'

,@srvproduct=n'庫名'

,@provider=n'msdaora'

, @datasrc=n'tns名'

exec

master.dbo.

sp_addlinkedsrvlogin @rmtsrvname = n'別名'

,@locallogin =

null

, @useself = n'false'

, @rmtuser = n'

模式名'

,@rmtpassword = n'密碼'

注意:這裡面的tns名,是在該sql server器端所配置的tns名,不是在客戶端本地哦。

建立好了後,使用「select * from openquery(別名,'select * from

模式名.表名」來執行查詢。

要連線到其他型別的資料庫時,其實方式也類同,只要用相應的provider來連線即可。

四、在oracle中連線sql server資料

在oracle中連線sqlserver也很類似,建立乙個dblink,但問題是,建立dblink裡,裡面用的tns名稱都是連線到oracle的,沒有配置連線到sql server中的。

於是想到採用oracle中的透明閘道器來實現,首先在oracle的安裝名中裝上,oracle net services和oracle transparent gateways, 並在此項下選擇oracle transparent gateway for microsoft sql server。

配置透明閘道器,編輯%oracle_home%/tg4msql/admin/init%oracle_sid%.ora, 該檔案包含了tg for sql server的配置資訊, 其中%oracle_sid%是給tg的"sid", 預設為tg4msql. 修改檔案中的行hs_fds_connect_info="server=sql伺服器位址;database=庫名"。

然後建立***:編輯%oracle_home%/network/admin/listener.ora, 編輯對應listener的sid_list:

sid_list_listener=

(sid_list=

(sid_desc=

(sid_name=%oracle_sid%)

(oracle_home=oracle_home_directory)

(program=tg4msql)))

其中%oracle_sid%為第二布中設定的sid, 預設值為tg4msql. 修改listener.ora檔案後需重啟listener使修改生效.

最後就可以配置tns名了,如果直接修改tnsname.ora檔案的話,新增的格式是:

tns名=

(description=

(address=(protocol=tcp)(host=sqlserver)(port=1521))

(connect_data=(sid=閘道器id))

(hs=ok))

這樣,tns名後就可以建立db links,然後查詢的方式與前面一至。

除錯oracle, sql server儲存過程

關於儲存過程的除錯,知道方法以後很簡單,但在不知道的時候,為了測試乙個儲存過程的正確性,print,插入臨時表等可謂是使出了渾身解數,煩不勝煩 下面就把我工作中除錯儲存過程的方法,簡單的說明一下 除錯oracle儲存過程 環境 win2003 server oracle9i pl sql devel...

Oracle Sql Server相關查詢語句

上週處理過 oracle sql server 資料庫相關資料,發現其實它們的 sql 查詢語句有些是不太一樣的,比如行列轉置和將查詢結果插入新錶。本人還是比較願意寫 sql 語句的,網際網路的技術日新月異,前端後端各種框架 新技術每擱幾年就得更新一遍,根本學不過來,而 sql 語句這些多卻少有變化...

Oracle SQLServer中實現跨庫查詢

一 在sqlserver中連線另乙個sqlserver庫資料 exec master.dbo.sp addlinkedserver server n 別名 srvproduct n 庫名 provider n sqloledb datasrc n 伺服器位址 exec master.dbo.sp a...