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