跨伺服器資料庫查詢
① 跨伺服器查詢導入數據的sql語句
insert
into
MICS_WorkPlan_RestDays
select
*
from
OPENROWSET('SQLOLEDB',
'SERVER=192.168.2.97;uid=用戶名;pwd=密碼;Database=資料庫','select
*
from
v_restdays(sql語句,可執行存儲過程)')
as
a
此語句可用來將另一伺服器中的數據插入到本資料庫中的某一表內
② mysql跨伺服器查詢
當然是不能直接跨伺服器查詢了。但是,如果你有足夠的許可權,可以變通一下。就是MYSQL的同步復制
使s2作為s1的從伺服器,同步資料庫d1到s2,這樣s1做了更改後s2上也會有d1且d1也會隨之改變數據,再在s2上執行同台伺服器上的跨庫查詢就方便多了
關於如何設置「MYSQL的復制」,請到網站下載MYSQL參考手冊,里邊有詳細的說明
如果不明白,可以HI我
③ sql怎樣跨資料庫查詢oracle
假定您現在擁有一個以Microsoft.NET為架構的網路訂購系統,但是品管維護系統卻仍然使用一套舊式的Oracle資料庫應用程序。當您的顧客在產品保固期間下了產品更換之類的訂單,則該筆訂單將不收取任何費用。此時您需要從Oracle資料庫得到實時的查詢結果。借著建立連結伺服器的方式(linkedServer),您將可以從SQLServer實時查詢出位於Oracle資料庫的顧客資料,找出誰是您既有的客戶。
當您的資料分散在不同的SQLServer資料庫時,藉由連結伺服器可讓您執行跨伺服器之分布式查詢。當所有的資料庫伺服器都是SQLServer,則連結伺服器的設定十分容易,而且在SQLServer線上手冊中就涵蓋了您所需要了解的所有事項。然而,當部分資料是放在Oracle資料庫伺服器的時候,這就可能帶給您許多挑戰。舉例來說,光是設定連結伺服器就不是一件容易的事。您必須了解到:即是您要在SQLServer的EnterpriseManager設定一個Oracle連結伺服器,這台SQLServer對Oracle來說就是一個客戶端。所以您必須在SQLServer所在的伺服器成功地安裝並組態Oracle之客戶端軟體。因為Oracle提供的產品只支持Oracle8以後的資料庫,所以我假設您正在使用的都是Oracle8以後的資料庫。在OracleNet8函式庫則提供了SQLServer所需要的客戶端軟體。
設定連接伺服器時是利用Microsoft所提供的OLEDB ProviderforOracle,使用的Oracle網路函式庫為SQL*Net2.3.3.0.4或是以後的版本,不過這是Oracle7.3資料庫所提供的。換句話說,要設定Oracle資料庫為SQLServer的連接伺服器時,Oracle資料庫只要是7.3.3.4以後的版本,並搭配適當的SQL*Net或是Net8函式庫即可。
在Oracle資料庫中,一個schema即代表著SQLServer專家們所熟知的單一資料庫(譯者注2)。連接至Oracle資料庫時,您必須提供schema名稱、密碼以及主機聯機字元串(hoststring)。每一個特定的Oracle帳戶都擁有一個Oracleschema,而且只能有一個schema。所以schema名稱其實就等於該schema擁有者的帳戶名稱。您可以查詢Oracle的資料字典(Datadictionary)以得到更多有關schema的內容。
至於Oracle聯機字元串又可稱為服務名稱(servicename)或是系統識別資料(SystenIdentifier,SID)。我們所謂的SQLServer資料庫個體(instance)在Oracle則稱為資料庫(database)。所以安裝OracleServer時,安裝程序OracleUniversalInstaller(為一個圖形介面之安裝程序,與SQLServer的Setup程序類似)將會詢問您SID名稱為何,以作為Oracle資料庫之名稱。
這個部分原作者所提到schema的解釋有點問題。Oracleschema可視為同一個使用者所擁有的所有資料庫對象(schemaobjects)之集合。舉例來說,使用者scott所建立的EMPtable其完整名稱為SCOTT.EMP,而SCOTT就是EMP的schema名稱。所以schemaname其實就是一個Oracle資料庫之使用者帳號。但是絕對不能拿來跟資料庫相提並論!因為SQLServer的資料庫架構包含了datafiles與logfiles,但是Oracle的schemaobjects只存在於tablespace中。為了避免部分讀者產生混淆,特此說明。
④ 如何在SQL SERVER跨伺服器查詢資料庫
--創建鏈接伺服器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '遠程伺服器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用戶名 ', '密碼 '
--查詢示例
select * from ITSV.資料庫名.dbo.表名
--導入示例
select * into 表 from ITSV.資料庫名.dbo.表名
--以後不再使用時刪除鏈接伺服器
exec sp_dropserver 'ITSV ', 'droplogins '
--連接遠程/區域網數據(openrowset/openquery/opendatasource)
--1、openrowset
--查詢示例
select * from openrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼 ',資料庫名.dbo.表名)
--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼 ',資料庫名.dbo.表名)
--把本地表導入遠程表
insert openrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼 ',資料庫名.dbo.表名)
select *from 本地表
--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼 ',資料庫名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1
--openquery用法需要創建一個連接
--首先創建一個連接創建鏈接伺服器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '遠程伺服器名或ip地址 '
--查詢
select *
FROM openquery(ITSV, 'SELECT * FROM 資料庫.dbo.表名 ')
--把本地表導入遠程表
insert openquery(ITSV, 'SELECT * FROM 資料庫.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 資料庫.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=密碼 ').資料庫.dbo.表名
select * from 本地表
⑤ shell如何跨伺服器執行資料庫查詢
1、使用ssh-keygen生成密鑰實現快速登陸
[python]
view
plain
要跨伺服器自動執行腳本,得需要實現免密碼自動登陸,然後才能在多個伺服器之間跳轉,因此我們首先需要生成登陸密鑰。
生存登陸密鑰需要三個步驟,在本地機器創建密鑰,復制公鑰要遠程主機,將公鑰追加到遠程主機的authorized_keys
下面是一個操作示例:
oracle@linux1:~>
mkdir
~/.ssh
#首先在本地創建.ssh目錄並賦予許可權
oracle@linux1:~>
chmod
700
~/.ssh
oracle@linux1:~>
ssh-keygen
-t
rsa
#使用ssh-keygen生成密鑰對,也可以使用dsa方式
Generating
public/private
rsa
key
pair.
Enter
file
in
which
to
save
the
key
(/users/oracle/.ssh/id_rsa):
Enter
passphrase
(empty
for
no
passphrase):
Enter
same
passphrase
again:
Your
identification
has
been
saved
in
/users/oracle/.ssh/id_rsa.
Your
public
key
has
been
saved
in
/users/oracle/.ssh/id_rsa.pub.
The
key
fingerprint
is:
01:c8:48:01:f2:3d:a7:b4:cd:4a:9c:10:2d:ba:ef:4e
oracle@linux1
⑥ web應用伺服器到另一台oracle伺服器的資料庫查詢慢
跨伺服器數據查詢,伺服器要處理rollback,log之類的操作,還是存儲過程,會很慢。
可以這樣解決1、把數據、日誌、索引放到不同的I/O設備上,增加讀取速度,以前可以將Tempdb應放在RAID0上,SQL2000不在支持。數據量(尺寸)越大,提高I/O越重要。
2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)。
3、升級硬體。
4、根據查詢條件,建立索引,優化索引、優化訪問方式,限制結果集的數據量。注意填充因子要適當(最好是使用默認值0)。索引應該盡量小,使用位元組數小的列建索引好(參照索引的創建),不要對有限的幾個值的欄位建單一索引如性別欄位。
5、提高網速。
⑦ SQL資料庫跨庫查詢語句怎麼寫
1、同一個伺服器跨資料庫查詢
select a.列1,a.列2,b.列1,b.列1,
from 數據1.dob.查詢表1 a inner Join 數據2.dbo.查詢表2 b
on b.關聯欄位=a.關聯欄位
where 條件
2、不同服務跨資料庫查詢:
首先創建鏈接伺服器,後查詢方法與1類似,只是查詢時需要把數據鏈接名稱添加到查詢中。
具體操作參看:http://blog.csdn.net/htl258/article/details/5695391
⑧ sql資料庫中跨不同資料庫伺服器的查詢
--SQLServer跨伺服器查詢
--創建鏈接伺服器(連接的保密要自己想辦法解決啦!)
execsp_addlinkedserver'LKSV','','SQLOLEDB','遠程伺服器名或ip地址'
execsp_addlinkedsrvlogin'LKSV','false',null,'用戶名','密碼'
--查詢實例
select*fromLKSV.資料庫名.dbo.表名
⑨ 跨伺服器資料庫查詢數據慢,該怎麼解決
確定網速沒問題的話,用的又是存儲過程,伺服器要處理rollback,log之類的操作會變慢,但是不至於慢這么多,你檢查一下防火牆和殺毒軟體,把他們關了看看會不會變快。能想到的就這么多了。剛剛給你查了下,禁用DNS解析,連接速度會快很多。不妨試一下,如果還慢的話,建議用緩存吧,比如hibernate框架