sqlserver 多库查询 sp_addlinkedserver使用情势(添加链接服务器)

sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)

咱俩一般行使SQL
Server数据库时,平常碰着需要在实例Instance01中跨实例访问Instance02中的数据。例如在做多少迁移时,如下语句:

insert into Instance01.DB01.dbo.Table01

          select * from Instance02.DB01.dbo.Table01

常备意况下,这样做是不容许的,因为SQL
Server默认不得以跨实例访问数据。解决方案是采取存储过程sp_addlinkedserver举行实例注册。

sp_addlinkedserver在MSDN中的定义为:

sp_addlinkedserver [ @server= ] ‘server’ [ , [ @srvproduct= ]
‘product_name’ ]     

      [ , [ @provider= ] ‘provider_name’ ]    

      [ , [ @datasrc= ]SQL Server, ‘data_source’ ]

      [ , [ @location= ] ‘location’ ]

      [ , [ @provstr= ] ‘provider_string’ ]

      [ , [ @catalog= ] ‘catalog’ ]

譬如说:在Instance01实例中,执行如下SQL语句EXEC sp_addlinkedserver
‘Instance02’ //只写首个参数即可,默认状况下,注册的是SQL
Server数据库,其他参数用法详见MSDN。

假使您的五个实例在同一个域中,且Instance01与Instance02有一齐的域登陆帐号,那么通过地点的挂号后,前边的insert语句就能够执行了。否则,还索要对注册的远程实例举办登陆帐号注册,在Instance01实例中,执行如下SQL语句

EXEC sp_addlinkedsrvlogin ‘InstanceName’,’true’ 
//使用集成认证访问远程实例

或者 EXEC sp_addlinkedsrvlogin
‘InstanceName’,’false’,’TJ维克托,’sa’,’Password1′
//使用Windows认证访问远程实例,当用户以TJ维克托(Victor)用户登陆Instance01实例访问Instance02时,默认把TJ维克多映射成sa,且密码为Password1

经过
sp_addlinkedserver实例注册和sp_addlinkedsrvlogin登陆帐户注册后,就可以在Instance01中一向访问Instance02中的数据库数据了。

一旦还不可以访问,请检查本机DNS是否足以分析远程数据库的实例名。假诺不可以解析,可以在EXEC
sp_addlinkedserver
‘Instance02’中把Instance02换为IP,或者在hosts文件中,自己建立相应DNS映射。

下面罗列多少个跨实例数据库访问的仓储过程和视图。

储存过程名/视图名 效率 举例 
sp_addlinkedserver 注册远程数据库实例 exec sp_addlinkedserver
‘InstanceName’ 
sp_dropserver 删除远程数据库实例 exec sp_dropserver ‘InstanceName’ 
sp_addlinkedsrvlogin 注册远程实例登陆拜会帐户 exec
sp_addlinkedsrvlogin ‘InstanceName’, null 
sp_droplinkedsrvlogin 删除远程实例登陆拜会帐户 EXEC
sp_droplinkedsrvlogin ‘InstanceName’,’UserName’ 
sp_helpserver
当前实例已登记的可访问的实例(即查看使用sp_addlinkedserver已注册过的实例)
sp_helpserver 
sys.sysservers 功能同sp_helpserver select * from sys.sysservers 
sys.linked_logins
查看已注册的登陆拜会帐户(即查看使用sp_addlinkedsrvlogin已注册过的帐户)
select * from sys.linked_logins 
sys.remote_logins 查看已注册的远端访问帐户 select * from
sys.remote_logins

 

Exec sp_droplinkedsrvlogin ZYB,Null
–删除映射(录与链接服务器上远程登录之间的映照) 
Exec sp_dropserver ZYB –删除远程服务器链接 

EXEC sp_addlinkedserver 
@server=’ZYB’,–被访问的劳动器别名 
@srvproduct=”, 
@provider=’SQLOLEDB’, 
@datasrc=”/Server2″ –要访问的服务器 

EXEC sp_addlinkedsrvlogin 
‘ZYB’, –被访问的服务器别名 
‘false’, 
NULL, 
‘sa’, –帐号 
‘sa’ –密码 

采纳实例: 
Select * from ZYB.CDCenter20110822.dbo.cardbase

 

摘自:http://www.cnblogs.com/zcttxs/p/3445629.html

相关文章