sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
我們?nèi)粘J褂肧QL Server數(shù)據(jù)庫時(shí),經(jīng)常遇到需要在實(shí)例Instance01中跨實(shí)例訪問Instance02中的數(shù)據(jù)。例如在做數(shù)據(jù)遷移時(shí),如下語句:
insert into Instance01.DB01.dbo.Table01
select * from Instance02.DB01.dbo.Table01
普通情況下,這樣做是不允許的,因?yàn)镾QL Server默認(rèn)不可以跨實(shí)例訪問數(shù)據(jù)。解決方案是使用存儲(chǔ)過程sp_addlinkedserver進(jìn)行實(shí)例注冊(cè)。
sp_addlinkedserver在MSDN中的定義為:
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
[ , [ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
例如:在Instance01實(shí)例中,執(zhí)行如下SQL語句EXEC sp_addlinkedserver ‘Instance02’ //只寫第一個(gè)參數(shù)即可,默認(rèn)情況下,注冊(cè)的是SQL Server數(shù)據(jù)庫,其他參數(shù)用法詳見MSDN。
如果你的兩個(gè)實(shí)例在同一個(gè)域中,且Instance01與Instance02有共同的域登陸帳號(hào),那么經(jīng)過上面的注冊(cè)后,前面的insert語句就可以執(zhí)行了。否則,還需要對(duì)注冊(cè)的遠(yuǎn)程實(shí)例進(jìn)行登陸帳號(hào)注冊(cè),在Instance01實(shí)例中,執(zhí)行如下SQL語句
EXEC sp_addlinkedsrvlogin 'InstanceName','true' //使用集成認(rèn)證訪問遠(yuǎn)程實(shí)例
或者 EXEC sp_addlinkedsrvlogin 'InstanceName','false','TJVictor,'sa','Password1' //使用Windows認(rèn)證訪問遠(yuǎn)程實(shí)例,當(dāng)用戶以TJVictor用戶登陸Instance01實(shí)例訪問Instance02時(shí),默認(rèn)把TJVictor映射成sa,且密碼為Password1
經(jīng)過 sp_addlinkedserver實(shí)例注冊(cè)和sp_addlinkedsrvlogin登陸帳戶注冊(cè)后,就可以在Instance01中直接訪問Instance02中的數(shù)據(jù)庫數(shù)據(jù)了。
如果還無法訪問,請(qǐng)檢查本機(jī)DNS是否可以解析遠(yuǎn)程數(shù)據(jù)庫的實(shí)例名。如果無法解析,可以在EXEC sp_addlinkedserver ‘Instance02’中把Instance02換為IP,或者在hosts文件中,自己建立相應(yīng)DNS映射。
下面列舉幾個(gè)跨實(shí)例數(shù)據(jù)庫訪問的存儲(chǔ)過程和視圖。
存儲(chǔ)過程名/視圖名 作用 舉例
sp_addlinkedserver 注冊(cè)遠(yuǎn)程數(shù)據(jù)庫實(shí)例 exec sp_addlinkedserver ‘InstanceName’
sp_dropserver 刪除遠(yuǎn)程數(shù)據(jù)庫實(shí)例 exec sp_dropserver ‘InstanceName’
sp_addlinkedsrvlogin 注冊(cè)遠(yuǎn)程實(shí)例登陸訪問帳戶 exec sp_addlinkedsrvlogin ‘InstanceName’, null
sp_droplinkedsrvlogin 刪除遠(yuǎn)程實(shí)例登陸訪問帳戶 EXEC sp_droplinkedsrvlogin 'InstanceName','UserName'
sp_helpserver 當(dāng)前實(shí)例已注冊(cè)的可訪問的實(shí)例(即查看使用sp_addlinkedserver已注冊(cè)過的實(shí)例) sp_helpserver
sys.sysservers 功能同sp_helpserver select * from sys.sysservers
sys.linked_logins 查看已注冊(cè)的登陸訪問帳戶(即查看使用sp_addlinkedsrvlogin已注冊(cè)過的帳戶) select * from sys.linked_logins
sys.remote_logins 查看已注冊(cè)的遠(yuǎn)端訪問帳戶 select * from sys.remote_logins
Exec sp_droplinkedsrvlogin ZYB,Null --刪除映射(錄與鏈接服務(wù)器上遠(yuǎn)程登錄之間的映射)
Exec sp_dropserver ZYB --刪除遠(yuǎn)程服務(wù)器鏈接
EXEC sp_addlinkedserver
@server='ZYB',--被訪問的服務(wù)器別名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc="/Server2" --要訪問的服務(wù)器
EXEC sp_addlinkedsrvlogin
'ZYB', --被訪問的服務(wù)器別名
'false',
NULL,
'sa', --帳號(hào)
'sa' --密碼
使用實(shí)例:
Select * from ZYB.CDCenter20110822.dbo.cardbase
總結(jié)
以上是生活随笔為你收集整理的sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows终端命令行下使用网络代理
- 下一篇: Symbol