天天看点

T-Sql访问远程数据库

一、连接全程服务器

exec sp_addlinkedserver   'MAP', '', 'SQLOLEDB', '服务器的IP地址或名称' ;
           

二、登录远程数据库

exec sp_addlinkedsrvlogin 'MAP', 'false ',null, '远程数据登录名', '远程数据库密码' 
           

三、查看本地远程连接信息

---查看连接的服务和登录信息
-- 当前实例已注册的可访问的实例(即查看使用sp_addlinkedserver已注册过的实例)
exec sp_helpserver;
select * from sys.servers;---功能同sp_helpserver
--查看已注册的登陆访问帐户(即查看使用sp_addlinkedsrvlogin已注册过的帐户)
select * from sys.linked_logins;
--查看已注册的远端访问帐户
select *  from sys.remote_logins;
           

四、查询或操作数据

查询使用

select * from MAP.MyDB.dbo.OverCase;
select * from openquery(MAP,'select * from MyDB.dbo.OverCase');
           

游标中使用(注:比较慢)

begin
---创建游标修改 EnterTime
declare @caseid int;
declare @time datetime;
declare cursorOne cursor  for select caseid,entertime from WLLiuXue_Diy.dbo.OverCase;
open cursorOne;
fetch next  from cursorOne into @caseid,@time;
while(@@FETCH_STATUS=0)
begin
  --print @caseid;
  --print @time;
  update MAP.WLLiuXue_Diy.dbo.OverCase set [email protected]
  where [email protected];
fetch next  from cursorOne into @caseid,@time;
end;
close cursorOne;
deallocate cursorOne;
end;
           

五、断开登录、断开连接

Exec sp_droplinkedsrvlogin 'MAP' ,null
Exec sp_dropserver 'MAP'
           

六、存储过程详细介绍

sp_addlinkedsrvlogin

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' 
     [ , [ @useself = ] 'TRUE' | 'FALSE' | NULL ] 
     [ , [ @locallogin = ] 'locallogin' ] 
     [ , [ @rmtuser = ] 'rmtuser' ] 
     [ , [ @rmtpassword = ] 'rmtpassword' ] 
           

参数说明:

[  @rmtsrvname  = ]  ' rmtsrvname '

应用登录映射的链接服务器的名称。   rmtsrvname 的数据类型为 sysname,无默认值。  

[  @useself  = ]  'TRUE ' | 'FALSE' | 'NULL'

确定是否通过模拟本地登录名或显式提交登录名和密码来连接到 rmtsrvname。  数据类型为 varchar(8),默认值为 TRUE。  

值为 TRUE 指定登录名使用自己的凭据连接到 rmtsrvname,而忽略 rmtuser 和 rmtpassword 参数。  FALSE 指定 rmtuser 和rmtpassword 参数用于连接到指定 locallogin 的 rmtsrvname。  如果 rmtuser 和 rmtpassword 也设置为 NULL,则不使用登录名或密码来连接链接服务器。  

[  @locallogin  = ]  ' locallogin '

本地服务器上的登录。   locallogin 的数据类型为 sysname,默认值为 NULL。  NULL 指定此项应用于连接到 rmtsrvname 的所有本地登录。  如果不为 NULL,则 locallogin 可以是 SQL Server 登录或 Windows 登录。  对于 Windows 登录来说,必须以直接的方式或通过已被授权访问的 Windows 组成员身份授予其访问 SQL Server 的权限。  

[  @rmtuser  = ]  ' rmtuser '

当 @useself 为 FALSE 时,用于连接到 rmtsrvname 的远程登录名。  当远程服务器是不使用 Windows 身份验证的 SQL Server 实例时,rmtuser 是一个 SQL Server 登录名。   rmtuser 的数据类型为 sysname,默认值为 NULL。  

[  @rmtpassword  = ]  ' rmtpassword '

与 rmtuser 关联的密码。   rmtpassword 的数据类型为 sysname,默认值为 NULL。  

sp_addlinkedserver 

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]     
      [ , [ @provider= ] 'provider_name' ]    
      [ , [ @datasrc= ] 'data_source' ]
      [ , [ @location= ] 'location' ]
      [ , [ @provstr= ] 'provider_string' ]
      [ , [ @catalog= ] 'catalog' ]
           
EXEC sp_addlinkedserver 
@server='ZYB',--被访问的服务器别名 
@srvproduct='', 
@provider='SQLOLEDB', 
@datasrc="/Server2" --要访问的服务器 
           

七、相关资料

1.

http://www.cnblogs.com/xiangzhong/p/5051271.html

2.

http://www.cnblogs.com/OpenCoder/archive/2010/03/18/1689321.html

3.

https://msdn.microsoft.com/zh-cn/library/ms189811.aspx