分享

sql 跨数据库 访问数据 创建远程服务器链接

 时间剧毒 2014-09-18

推荐资料自学网址:http://www./study.asp?vip=10241777 

--跨数据库 访问数据 创建远程服务器链接


SELECT  *  FROM  sys.servers    --查看服务器

Exec sp_dropserver 'H6' -- 以后不再使用时删除链接服务器


Exec sp_droplinkedsrvlogin 远程数据库的IP或主机名,Null      --删除默认登录映射 


EXEC  sp_addlinkedserver     --创建一个链接的服务器
@server='H6',--被访问的服务器别名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='H6'   --要访问的服务器

EXEC sp_addlinkedsrvlogin    --创建或更新 SQL Server 本地实例上的登录名与远程服务器中安全帐户之间的映射。
'H6', --被访问的服务器别名
'false',  --确定是否通过模拟本地登录名或显式提交登录名和密码来连接到服务器   false指 用  rmtuser 和 rmtpassword 登录
NULL, --本地服务器上的登录。 locallogin 的数据类型为 sysname,默认值为 NULL。 NULL 指定此项应用于连接到 rmtsrvname 的所有本地登录
'sa', --账号
'123' --密码

--连接远程/局域网数据(openrowset/openquery/opendatasource) 
openrowset 

 


--    select * from  [服务器].[数据库].dbo.[表名称]
Select *  from H6.[2013].dbo.[xl]
select * from H6.[2012].dbo.[A-资料表]

--试例1
select * from openrowset( 'SQLOLEDB', 'H6'; 'sa'; '123',[2013].dbo.[a]) 
--试例2
select * into xll from openrowset( 'SQLOLEDB', 'H6'; 'sa'; '123',[ibooks].dbo.[ff]) 
--试例3
select * into xll  from H6.[2012].dbo.[A-资料表]

 

 

/*不同服务器数据库之间的数据操作*/ 
--创建链接服务器 
exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 ' 
--查询示例 
select * from ITSV.数据库名.dbo.表名 
--导入示例
select * into 表 from ITSV.数据库名.dbo.表名
--以后不再使用时删除链接服务器
exec sp_dropserver  'ITSV ', 'droplogins ' 
--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset 
--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)  
--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)  select *from 本地表 
--更新本地表
update b  set b.列A=a.列A 
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b  on a.column1=b.column1   

--openquery用法需要创建一个连接 
--首先创建一个连接创建链接服务器
exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *  FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ')
--把本地表导入远程表 
insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ')  select * from 本地表 
--更新本地表
update b  set b.列B=a.列B  FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a   inner join 本地表 b on a.列A=b.列A   
--3、opendatasource/openrowset 
SELECT   *
FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约