exec sp_addlinkedserver @server='servera', @srvproduct='', @provider='sqloledb', @datasrc='192.168.0.28'
exec sp_addlinkedsrvlogin @rmtsrvname='servera', @useself='false', @rmtuser ='sa',@rmtpassword = 'aaa'
exec sp_serveroption 'servera', 'lazy schema validation', 'true'
如何在sql server中建立與其它sql server的連線
建立一台名為 server2 的鏈結伺服器:
use master
exec sp_addlinkedserver server2,nsql server
建立乙個對映,使用帳號 sa 和密碼 password 連線到鏈結伺服器 server2:
exec sp_addlinkedsrvlogin server2, false, null, sa, password
查詢資料:
select * from server2.dbname.dbo.tablename
--如果經常訪問或資料量大,建議用鏈結伺服器
--建立鏈結伺服器
exec sp_addlinkedserver srv_lnk,,sqloledb,遠端伺服器名或ip位址
exec sp_addlinkedsrvlogin srv_lnk,false,null,使用者名稱,密碼
go
--查詢示例
select * from srv_lnk.資料庫名.dbo.表名
--匯入示例
select * into 表 from srv_lnk.資料庫名.dbo.表名
go
--處理完成後刪除鏈結伺服器
exec sp_dropserver srv_lnk,droplogins
由於業務邏輯的多樣性
經常得在sql server中查詢不同資料庫中資料
這就產生了分布式查詢的需求
現我將開發中遇到的幾種查詢總結如下:
1.access版本
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
'ai',
--產品名稱
'access',
--ole db 字元
'microsoft.jet.oledb.4.0',
--資料來源
--格式:
-- 碟符:\路徑\檔名
-- \\網路名\共享名\檔名 (網路版本)
'd:\testdb\db.mdb'
go --建立鏈結伺服器上遠端登入之間的對映
--鏈結伺服器預設設定為用登陸的上下文進行
--現在我們修改為連線鏈結伺服器不需使用任何登入或密碼
exec sp_addlinkedsrvlogin 'ai','false'
go --查詢資料
select * from ai...mytable
go 2.excel版本
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
'ai_ex',
--產品名稱
'ex',
--ole db 字元
'microsoft.jet.oledb.4.0',
--資料來源
--格式:
-- 碟符:\路徑\檔名
-- \\網路名\共享名\檔名 (網路版本)
'd:\testdb\mybook.xls' ,
null,
--ole db 提供程式特定的連線字串
'excel 5.0'
go ----建立鏈結伺服器上遠端登入之間的對映
--鏈結伺服器預設設定為用登陸的上下文進行
--現在我們修改為連線鏈結伺服器不需使用任何登入或密碼
exec sp_addlinkedsrvlogin 'ai_ex','false'
go --查詢資料
select * from ai_ex...sheet3$
go 3.ms sql版本
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
'ai_mssql',
--產品名稱
'ms',
--ole db 字元
'sqloledb',
--資料來源
'218.204.111.111,3342'
go --建立鏈結伺服器上遠端登入之間的對映
exec sp_addlinkedsrvlogin
'ai_mssql',
'false',
null,
--遠端伺服器的登陸使用者名稱
'zhangzhe',
--遠端伺服器的登陸密碼
'fish2231'
go --查詢資料
select * from ai_mssql.pubs.dbo.jobs
go --還有乙個更簡單的辦法
--這種方式在鏈結伺服器建立後,它是預設開放rpc的
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
--這裡就用資料來源作名稱
'218.204.111.111,3342',
'sql server'
go --建立鏈結伺服器上遠端登入之間的對映
exec sp_addlinkedsrvlogin
'218.204.111.111,3342',
'false',
null,
--遠端伺服器的登陸使用者名稱
'zhangzhe',
--遠端伺服器的登陸密碼
'fish2231'
go --查詢資料
select * from [218.204.253.131,3342].pubs.dbo.jobs
go 4.oracle版本
--建立連線伺服器
exec sp_addlinkedserver
--要建立的鏈結伺服器名稱
'o',
--產品名稱
'oracle',
--ole db 字元
'msdaora',
--資料來源
'acc'
go --建立鏈結伺服器上遠端登入之間的對映
exec sp_addlinkedsrvlogin
'o',
'false',
null,
--oracle伺服器的登陸使用者名稱
'f02m185',
--oracle伺服器的登陸密碼
'f02m185185'
go --查詢資料
--格式:linkserver..oracle使用者名稱.表名
--注意用大寫,因為在oracle的資料字典中為大寫
select * from o..f02m185.ai
go
分布式查詢
sql server所謂的分布式查詢 distributed query 是能夠訪問存放在同一部計算機或不同計算機上的sql server 或不同種類的資料來源,從概念上來說分布式查詢與普通查詢區別 它需要連線多個mssql伺服器也就是具有多了資料來源.實現在伺服器跨域或跨伺服器訪問.而這些查詢是否...
分布式查詢
sql server所謂的分布式查詢 distributed query 是能夠訪問存放在同一部計算機或不同計算機上的sql server 或不同種類的資料來源,從概念上來說分布式查詢與普通查詢區別 它需要連線多個mssql伺服器也就是具有多了資料來源.實現在伺服器跨域或跨伺服器訪問.而這些查詢是否...
分布式查詢 opendatasource
insert into t gene sy pres pres name,address,byrs,edus id,gdrxnl,kinderclass id,kindertype id select pres name,address,cast byrs as numeric cast edus ...