新聞中心
如何在SQL SERVER跨服務(wù)器查詢數(shù)據(jù)庫
--創(chuàng)建鏈接服務(wù)器
成都創(chuàng)新互聯(lián)公司歡迎聯(lián)系:13518219792,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),成都創(chuàng)新互聯(lián)公司網(wǎng)頁制作領(lǐng)域十多年,包括成都iso認(rèn)證等多個(gè)領(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.表名
--以后不再使用時(shí)刪除鏈接服務(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用法需要?jiǎng)?chuàng)建一個(gè)連接
--首先創(chuàng)建一個(gè)連接創(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 本地表
在sqlserver實(shí)現(xiàn)跨庫查詢,該怎么實(shí)現(xiàn)
請(qǐng)問垮服務(wù)器沒?如果沒在一個(gè)服務(wù)器上,就使用鏈接服務(wù)器,實(shí)現(xiàn)跨庫查詢比較容易,如果在同一個(gè)服務(wù)器上,實(shí)現(xiàn)跨庫查詢,就使用select * from dbname.dbo.table1
SQL SERVER 存儲(chǔ)過程中如何使用傳入的DB參數(shù),實(shí)現(xiàn)跨庫查詢?
你可以建立一個(gè)公用的數(shù)據(jù)庫,里面就一張表,是U8歷次的數(shù)據(jù)庫名,然后用一個(gè)公用的方法去返回最新的數(shù)據(jù)庫句,這后你的視圖和存儲(chǔ)過程就用這個(gè)方法來返回?cái)?shù)據(jù)庫名進(jìn)行更新就行了。
sql怎樣跨數(shù)據(jù)庫查詢oracle
假定您現(xiàn)在擁有一個(gè)以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)用。此時(shí)您需要從Oracle數(shù)據(jù)庫得到實(shí)時(shí)的查詢結(jié)果。借著建立連結(jié)服務(wù)器的方式(linkedServer),您將可以從SQLServer實(shí)時(shí)查詢出位于Oracle數(shù)據(jù)庫的顧客資料,找出誰是您既有的客戶。
當(dāng)您的資料分散在不同的SQLServer數(shù)據(jù)庫時(shí),藉由連結(jié)服務(wù)器可讓您執(zhí)行跨服務(wù)器之分布式查詢。當(dāng)所有的數(shù)據(jù)庫服務(wù)器都是SQLServer,則連結(jié)服務(wù)器的設(shè)定十分容易,而且在SQLServer線上手冊(cè)中就涵蓋了您所需要了解的所有事項(xiàng)。然而,當(dāng)部分資料是放在Oracle數(shù)據(jù)庫服務(wù)器的時(shí)候,這就可能帶給您許多挑戰(zhàn)。舉例來說,光是設(shè)定連結(jié)服務(wù)器就不是一件容易的事。您必須了解到:即是您要在SQLServer的EnterpriseManager設(shè)定一個(gè)Oracle連結(jié)服務(wù)器,這臺(tái)SQLServer對(duì)Oracle來說就是一個(gè)客戶端。所以您必須在SQLServer所在的服務(wù)器成功地安裝并組態(tài)Oracle之客戶端軟件。因?yàn)镺racle提供的產(chǎn)品只支持Oracle8以后的數(shù)據(jù)庫,所以我假設(shè)您正在使用的都是Oracle8以后的數(shù)據(jù)庫。在OracleNet8函式庫則提供了SQLServer所需要的客戶端軟件。
設(shè)定連接服務(wù)器時(shí)是利用Microsoft所提供的OLEDB ProviderforOracle,使用的Oracle網(wǎng)絡(luò)函式庫為SQL*Net2.3.3.0.4或是以后的版本,不過這是Oracle7.3數(shù)據(jù)庫所提供的。換句話說,要設(shè)定Oracle數(shù)據(jù)庫為SQLServer的連接服務(wù)器時(shí),Oracle數(shù)據(jù)庫只要是7.3.3.4以后的版本,并搭配適當(dāng)?shù)腟QL*Net或是Net8函式庫即可。
在Oracle數(shù)據(jù)庫中,一個(gè)schema即代表著SQLServer專家們所熟知的單一數(shù)據(jù)庫(譯者注2)。連接至Oracle數(shù)據(jù)庫時(shí),您必須提供schema名稱、密碼以及主機(jī)聯(lián)機(jī)字符串(hoststring)。每一個(gè)特定的Oracle帳戶都擁有一個(gè)Oracleschema,而且只能有一個(gè)schema。所以schema名稱其實(shí)就等于該schema擁有者的帳戶名稱。您可以查詢Oracle的資料字典(Datadictionary)以得到更多有關(guān)schema的內(nèi)容。
至于Oracle聯(lián)機(jī)字符串又可稱為服務(wù)名稱(servicename)或是系統(tǒng)識(shí)別資料(SystenIdentifier,SID)。我們所謂的SQLServer數(shù)據(jù)庫個(gè)體(instance)在Oracle則稱為數(shù)據(jù)庫(database)。所以安裝OracleServer時(shí),安裝程序OracleUniversalInstaller(為一個(gè)圖形接口之安裝程序,與SQLServer的Setup程序類似)將會(huì)詢問您SID名稱為何,以作為Oracle數(shù)據(jù)庫之名稱。
這個(gè)部分原作者所提到schema的解釋有點(diǎn)問題。Oracleschema可視為同一個(gè)使用者所擁有的所有數(shù)據(jù)庫對(duì)象(schemaobjects)之集合。舉例來說,使用者scott所建立的EMPtable其完整名稱為SCOTT.EMP,而SCOTT就是EMP的schema名稱。所以schemaname其實(shí)就是一個(gè)Oracle數(shù)據(jù)庫之使用者帳號(hào)。但是絕對(duì)不能拿來跟數(shù)據(jù)庫相提并論!因?yàn)镾QLServer的數(shù)據(jù)庫架構(gòu)包含了datafiles與logfiles,但是Oracle的schemaobjects只存在于tablespace中。為了避免部分讀者產(chǎn)生混淆,特此說明。
標(biāo)題名稱:sqlserver可以跨庫查詢,sqlserver跨庫連接查詢
網(wǎng)站網(wǎng)址:http://fisionsoft.com.cn/article/hddphp.html