SQL之链接服务器(Sp_addlinkedserver)
https://bbs.csdn.net/topics/230059074
https://www.cnblogs.com/vinsonLu/p/4456027.html
不同服务器数据库之间的数据操作
EXEC sp_addlinkedserver @server = 'PC-20180316ZOVJ', @srvproduct = '', @provider = 'SQLOLEDB', @datasrc = '192.168.1.106' GO EXEC sp_addlinkedsrvlogin 'PC-20180316ZOVJ', 'false', NULL, 'pp', '123' GO
数据库的库名是dvnewsProvider=SQLOLEDB 数据库采用SQL的方式连接
--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '目标远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' 2个ITSV 要保持一致
--查询示例 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 --把本地表导入远程表 insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 select * from
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 select * from sys.servers;--找找本登录用户的有的链接数据库 2 Exec sp_helpserver--找找本登录用户的有的链接数据库 3 4 Exec sp_droplinkedsrvlogin 'PC-20180316ZOVJ',Null--别名就是服务器名称(S) 5 Exec sp_dropserver 'PC-20180316ZOVJ' 6 7 --使用sp_addlinkedserver来增加链接 8 9 EXEC sp_addlinkedserver 10 @server='192.168.2.66',--被访问的服务器别名(习惯上直接使用目标服务器IP,就是你要链接的那个) 11 @srvproduct='', 12 @provider='SQLOLEDB', 13 @datasrc='192.168.2.66' --要访问的服务器
EXEC sp_addlinkedserver @server='PC-20180316ZOVJ', --链接服务器别名 @srvproduct='', @provider='SQLOLEDB', @datasrc='192.168.1.106' --要访问的的数据库所在的服务器的ip GO EXEC sp_addlinkedsrvlogin 'PC-20180316ZOVJ', --链接服务器别名 'false', NULL, 'pp', --要访问的数据库的用户 '123' --要访问的数据库,用户的密码 GO --从远程那里获取的数据的表,在本地的T_ZKB首先是不存在的 select * into [T_ZKB] from [PC-20180316ZOVJ].[popo].dbo.Table_1 select * into T_ZKB1 from [PC-20180316ZOVJ].[popo].dbo.Table_1 exec sp_addlinkedserver 'ITSV8686 ', ' ', 'SQLOLEDB ', '192.168.1.106' exec sp_addlinkedsrvlogin 'ITSV8686 ', 'false ',null, 'pp ', '123 ' select * from ITSV8686.popo.dbo.Table_1 --特么pp登录失败???? update b set b.Name=a.Name from openrowset( 'SQLOLEDB ', '192.168.1.106'; 'pp '; '123 ',数据库名.dbo.表名)as a inner join T_ZKB b on a.ID=b.ID --特么pp登录失败????
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。