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...