跨庫訪問 Oracle和sqlserver

2021-08-16 09:04:58 字數 2171 閱讀 3902

from:

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

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=庫名"。

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,然後查詢的方式與前面一至

sql server 跨庫訪問

最近在做跨庫來訪問不在同乙個資料庫的資料,語法格式如下所示 select from opendatasource sqloledb data source 遠端ip user id sa password 密碼 庫名.dbo.表名 根據該語法格式我寫了乙個語句如下所示 select from ope...

SQL Server跨庫訪問

mssqlserver不同伺服器資料庫之間的資料操作 方法1 建立鏈結伺服器 exec sp addlinkedserver itsv sqloledb 遠端伺服器名或ip位址 exec sp addlinkedsrvlogin itsv false null,使用者名稱 密碼 查詢示例 selec...

資料庫 mysql 跨庫訪問 資料庫跨庫訪問問題

sql server中的所有權鏈及其問題 沒有多少朋友對所有權鏈真的理解的。我自己有時候經常回過來看看這些資料,覺得還是很有意思的。下面的內容摘自微軟文件,介紹得比較好 簡而言之 1.如果在同乙個資料庫中,只要兩個物件的所有者是一樣的,那麼他們之間的訪問是不檢查訪問者身份的。例如乙個檢視和乙個表是屬...