--查看当前链接情况: select * from sys.servers; --使用 sp_helpserver 来显示可用的服务器 Exec sp_helpserver --删除已经存在的某个链接 Exec sp_droplinkedsrvlogin 服务器别名,Null Exec sp_dropserver 服务器别名 --使用sp_addlinkedserver来增加链接 EXEC sp_addlinkedserver @server='192.168.2.66',--被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:JOY) @srvproduct='', @provider='SQLOLEDB', @datasrc='192.168.2.66' --要访问的服务器 这里的datasrc是要链接的数据库的实例的地址(就是数据库连接字符串里的server,比如本机就是.或者local,或者目标数据库实例的IP(可以加端口)) --使用sp_addlinkedsrvlogin 来增加用户登录链接 EXEC sp_addlinkedsrvlogin '192.168.2.66', --被访问的服务器别名(如果上面sp_addlinkedserver中使用别名JOY,则这里也是JOY) 'false', NULL, 'sa', --帐号 'test123' --密码 -- 使用举例(访问目标服务器上的数据库Music,查看其中表test的内容): -- 如果建立链接时的别名是目标服务器IP,即192.168.2.66 -- 则: select * from [192.168.2.66].[Music].dbo.test -- 如果建立链接时的别名是JOY, -- 则: select * from [JOY].[Music].dbo.test -- 可能会遇到的问题: exec sp_dropserver 'JOY'执行失败, -- 报错信息:仍有对服务器 'JOY' 的远程登录或链接登录。 -- 解决方法: exec sp_droplinkedsrvlogin 'JOY',null exec sp_dropserver 'JOY'
另一则:
--查看当前链接情况: select * from sys.servers; select * from sys.linked_logins; select * from sys.remote_logins --使用 sp_helpserver 来显示可用的服务器 Exec sp_helpserver --删除已经存在的某个链接 Exec sp_droplinkedsrvlogin 'commondb',Null Exec sp_dropserver 'commondb' --使用sp_addlinkedserver来增加链接 EXEC sp_addlinkedserver @server='commondb',--被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:test) @srvproduct='', @provider='SQLOLEDB', @datasrc='127.0.0.1,1086' --要访问的服务器 --使用sp_addlinkedsrvlogin来增加用户登录链接 EXEC sp_addlinkedsrvlogin 'commondb', --被访问的服务器别名(如果上面sp_addlinkedserver中使用别名test,则这里也是test) 'false',NULL, 'sa', --帐号 'sa1235' --密码 --使用举例(访问目标服务器上的数据库Music,查看其中表test的内容): --如果建立链接时的别名是目标服务器IP,即192.168.1.100则:select * from[192.168.1.100].[Music].dbo.test --如果建立链接时的别名是test,--则:select * from[test].[Music].dbo.test --可能会遇到的问题:exec sp_dropserver 'test'执行失败, --报错信息:仍有对服务器 'test'的远程登录或链接登录。 --解决方法(删除DBLike): exec sp_droplinkedsrvlogin'test',null exec sp_dropserver 'test' --这两个是打开rpc,rpc out的,默认为False,打开后可以支持远程更改分布式事务。(如有分布式事务操作必须要设置) exec sp_serveroption 'test','rpc out','true' exec sp_serveroption 'test','rpc','true' ---- 存储过程名/视图名 作用 举例 --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_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 innerjoin 本地表 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 本地表
http://blog.sina.com.cn/s/blog_4c197d4201017aoq.html
http://www.cnblogs.com/JimmyGe/archive/2011/07/15/2107098.html
http://blog.csdn.net/luoyanqing119/article/details/7506385