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 EnterTime=@time
  where CaseID=@caseid;
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值