--創(chuàng)建鏈接服務(wù)器
成都創(chuàng)新互聯(lián)公司歡迎聯(lián)系:13518219792,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),成都創(chuàng)新互聯(lián)公司網(wǎng)頁制作領(lǐng)域十多年,包括成都iso認(rèn)證等多個領(lǐng)域擁有多年的網(wǎng)站制作經(jīng)驗(yàn),選擇成都創(chuàng)新互聯(lián)公司,為企業(yè)錦上添花。
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '遠(yuǎn)程服務(wù)器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用戶名 ', '密碼 '
--查詢示例
select * from ITSV.數(shù)據(jù)庫名.dbo.表名
--導(dǎo)入示例
select * into 表 from ITSV.數(shù)據(jù)庫名.dbo.表名
--以后不再使用時刪除鏈接服務(wù)器
exec sp_dropserver 'ITSV ', 'droplogins '
--連接遠(yuǎn)程/局域網(wǎng)數(shù)據(jù)(openrowset/openquery/opendatasource)
--1、openrowset
--查詢示例
select * from openrowset( 'SQLOLEDB ', 'sql服務(wù)器名 '; '用戶名 '; '密碼 ',數(shù)據(jù)庫名.dbo.表名)
--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服務(wù)器名 '; '用戶名 '; '密碼 ',數(shù)據(jù)庫名.dbo.表名)
--把本地表導(dǎo)入遠(yuǎn)程表
insert openrowset( 'SQLOLEDB ', 'sql服務(wù)器名 '; '用戶名 '; '密碼 ',數(shù)據(jù)庫名.dbo.表名)
select *from 本地表
--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服務(wù)器名 '; '用戶名 '; '密碼 ',數(shù)據(jù)庫名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1
--openquery用法需要創(chuàng)建一個連接
--首先創(chuàng)建一個連接創(chuàng)建鏈接服務(wù)器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '遠(yuǎn)程服務(wù)器名或ip地址 '
--查詢
select *
FROM openquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫.dbo.表名 ')
--把本地表導(dǎo)入遠(yuǎn)程表
insert openquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A
--3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ' ).test.dbo.roy_ta
--把本地表導(dǎo)入遠(yuǎn)程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ').數(shù)據(jù)庫.dbo.表名
select * from 本地表
請問垮服務(wù)器沒?如果沒在一個服務(wù)器上,就使用鏈接服務(wù)器,實(shí)現(xiàn)跨庫查詢比較容易,如果在同一個服務(wù)器上,實(shí)現(xiàn)跨庫查詢,就使用select * from dbname.dbo.table1
你可以建立一個公用的數(shù)據(jù)庫,里面就一張表,是U8歷次的數(shù)據(jù)庫名,然后用一個公用的方法去返回最新的數(shù)據(jù)庫句,這后你的視圖和存儲過程就用這個方法來返回數(shù)據(jù)庫名進(jìn)行更新就行了。
假定您現(xiàn)在擁有一個以Microsoft.NET為架構(gòu)的網(wǎng)絡(luò)訂購系統(tǒng),但是品管維護(hù)系統(tǒng)卻仍然使用一套舊式的Oracle數(shù)據(jù)庫應(yīng)用程序。當(dāng)您的顧客在產(chǎn)品保固期間下了產(chǎn)品更換之類的訂單,則該筆訂單將不收取任何費(fèi)用。此時您需要從Oracle數(shù)據(jù)庫得到實(shí)時的查詢結(jié)果。借著建立連結(jié)服務(wù)器的方式(linkedServer),您將可以從SQLServer實(shí)時查詢出位于Oracle數(shù)據(jù)庫的顧客資料,找出誰是您既有的客戶。
當(dāng)您的資料分散在不同的SQLServer數(shù)據(jù)庫時,藉由連結(jié)服務(wù)器可讓您執(zhí)行跨服務(wù)器之分布式查詢。當(dāng)所有的數(shù)據(jù)庫服務(wù)器都是SQLServer,則連結(jié)服務(wù)器的設(shè)定十分容易,而且在SQLServer線上手冊中就涵蓋了您所需要了解的所有事項(xiàng)。然而,當(dāng)部分資料是放在Oracle數(shù)據(jù)庫服務(wù)器的時候,這就可能帶給您許多挑戰(zhàn)。舉例來說,光是設(shè)定連結(jié)服務(wù)器就不是一件容易的事。您必須了解到:即是您要在SQLServer的EnterpriseManager設(shè)定一個Oracle連結(jié)服務(wù)器,這臺SQLServer對Oracle來說就是一個客戶端。所以您必須在SQLServer所在的服務(wù)器成功地安裝并組態(tài)Oracle之客戶端軟件。因?yàn)镺racle提供的產(chǎn)品只支持Oracle8以后的數(shù)據(jù)庫,所以我假設(shè)您正在使用的都是Oracle8以后的數(shù)據(jù)庫。在OracleNet8函式庫則提供了SQLServer所需要的客戶端軟件。
設(shè)定連接服務(wù)器時是利用Microsoft所提供的OLEDB ProviderforOracle,使用的Oracle網(wǎng)絡(luò)函式庫為SQL*Net2.3.3.0.4或是以后的版本,不過這是Oracle7.3數(shù)據(jù)庫所提供的。換句話說,要設(shè)定Oracle數(shù)據(jù)庫為SQLServer的連接服務(wù)器時,Oracle數(shù)據(jù)庫只要是7.3.3.4以后的版本,并搭配適當(dāng)?shù)腟QL*Net或是Net8函式庫即可。
在Oracle數(shù)據(jù)庫中,一個schema即代表著SQLServer專家們所熟知的單一數(shù)據(jù)庫(譯者注2)。連接至Oracle數(shù)據(jù)庫時,您必須提供schema名稱、密碼以及主機(jī)聯(lián)機(jī)字符串(hoststring)。每一個特定的Oracle帳戶都擁有一個Oracleschema,而且只能有一個schema。所以schema名稱其實(shí)就等于該schema擁有者的帳戶名稱。您可以查詢Oracle的資料字典(Datadictionary)以得到更多有關(guān)schema的內(nèi)容。
至于Oracle聯(lián)機(jī)字符串又可稱為服務(wù)名稱(servicename)或是系統(tǒng)識別資料(SystenIdentifier,SID)。我們所謂的SQLServer數(shù)據(jù)庫個體(instance)在Oracle則稱為數(shù)據(jù)庫(database)。所以安裝OracleServer時,安裝程序OracleUniversalInstaller(為一個圖形接口之安裝程序,與SQLServer的Setup程序類似)將會詢問您SID名稱為何,以作為Oracle數(shù)據(jù)庫之名稱。
這個部分原作者所提到schema的解釋有點(diǎn)問題。Oracleschema可視為同一個使用者所擁有的所有數(shù)據(jù)庫對象(schemaobjects)之集合。舉例來說,使用者scott所建立的EMPtable其完整名稱為SCOTT.EMP,而SCOTT就是EMP的schema名稱。所以schemaname其實(shí)就是一個Oracle數(shù)據(jù)庫之使用者帳號。但是絕對不能拿來跟數(shù)據(jù)庫相提并論!因?yàn)镾QLServer的數(shù)據(jù)庫架構(gòu)包含了datafiles與logfiles,但是Oracle的schemaobjects只存在于tablespace中。為了避免部分讀者產(chǎn)生混淆,特此說明。
分享標(biāo)題:sqlserver可以跨庫查詢,sqlserver跨庫連接查詢
鏈接分享:http://chinadenli.net/article48/hddphp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、微信小程序、App開發(fā)、動態(tài)網(wǎng)站、建站公司、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)