SQL对不同服务器数据库之间的数据操作

创建链接服务器

exec  
 sp_addlinkedserver    
 'ITSV' ,  
 ' ' ,  
 'SQLOLEDB' ,  
 '192.168.0.237'  --sql服务器ip地址
 
 exec  
 sp_addlinkedsrvlogin   
 'ITSV' 
 ,  
 'false' 
 , 
 null 
 ,  
 'sa' --用户名
 ,  
 '123'  --密码

select* from ITSV.XYMES_AiQi.AreaInfo

--执行删除ITSV,不使用时需要删除否则下次执行会报错(存在)
 exec  
 sp_dropserver   
 'ITSV' 
 ,  
 'droplogins' 

连接远程/局域网数据(openrowset/openquery/opendatasource)
1.openrowset
–查询示例


 select *  from  
 openrowset(  
 'SQLOLEDB ' 
 ,  
 '192.168.0.237' --sql服务器名ip地址
 ;  
 'sa' --用户名
 ;  
 '123' --密码
 ,[XYMES_AiQi].[dbo].[AreaInfo])  --数据库名.dbo.表名

–生成本地表


 select * into  
 AreaInfo  --表
 from  
 openrowset(  
 'SQLOLEDB ' 
 ,  
 '192.168.0.237' --sql服务器名ip地址
 ;  
 'sa' --用户名
 ;  
 '123' --密码
 ,[XYMES_AiQi].[dbo].[AreaInfo])  --数据库名.dbo.表名

–把本地表导入远程表

 insert  
 openrowset(  
 'SQLOLEDB ' 
 ,  
 '192.168.0.237' --sql服务器名ip地址
 ;  
 'sa' --用户名
 ;  
 '123' --密码
 ,[XYMES_AiQi].[dbo].[AreaInfo])  --数据库名.dbo.表名
 select * from  [AreaInfo]  --本地表

–更新本地表


 update b  set  b.列A=a.列A  
 from  
 openrowset(  
 'SQLOLEDB ' 
 ,  
 '192.168.0.237' --sql服务器名ip地址
 ;  
 'sa' --用户名
 ;  
 '123' --密码
 ,[XYMES_AiQi].[dbo].[AreaInfo])  --数据库名.dbo.表名
 as  a  inner  join  
 [AreaInfo] b  --本地表
 on  
 a.column1=b.column1  

2.openquery用法需要创建一个连接

–创建一个连接创建链接服务器


--创建一个连接创建链接服务器 
 exec  
 sp_addlinkedserver    
 'ITSV ' 
 ,  
 ' ' 
 ,  
 'SQLOLEDB ' 
 ,  
 '192.168.0.237'  --远程sql服务器名ip地址

–查询

--查询
 select  *  FROM  
 openquery(ITSV,   
 'SELECT * [XYMES_AiQi].[dbo].[AreaInfo]' --SELECT * FROM 数据库.dbo.表名
 )  

–把本地表导入远程表

 --把本地表导入远程表 
 insert  
 openquery(ITSV,   
 'SELECT * [XYMES_AiQi].[dbo].[AreaInfo]'  --SELECT * FROM 数据库.dbo.表名
 )  
 select  *  from AreaInfo --本地表 

–更新本地表

 --更新本地表 
update  b  set  b.列B=a.列B  FROM  
 openquery(ITSV,   
 'SELECT * [XYMES_AiQi].[dbo].[AreaInfo]'  --SELECT * FROM 数据库.dbo.表名
 )  
 as  a   inner  join  
 AreaInfo --本地表 
 b  
 on  
 a.列A=b.列A  
 

3.opendatasource/openrowset


 SELECT  *  FROM    
 opendatasource(  
 'SQLOLEDB ' 
 ,   
 'Data Source=192.168.0.237/ServerName;User ID=sa;Password=123'  --Data Source=ip/ServerName;User ID=登陆名;Password=密码
 ).[XYMES_AiQi].[dbo].[AreaInfo]  --数据库.dbo.表名 
 
 
 --把本地表导入远程表 
 insert  
 opendatasource(  
 'SQLOLEDB ' 
 ,   
 'Data Source=192.168.0.237/ServerName;User ID=sa;Password=123'  --Data Source=ip/ServerName;User ID=登陆名;Password=密码
 ).[XYMES_AiQi].[dbo].[AreaInfo]  --数据库.dbo.表名 
 
 select  *  from [AreaInfo] --本地表

4.EXEC AT使用 必须启动rpc


 EXEC  
 sp_addlinkedserver  
 'chinancl' 
 , 
 ' ' 
 , 
 'SQLOLEDB' 
 , 
 'CHINANCL-CMS'    
 --新建连接 
 
 EXEC  
 sp_addlinkedsrvlogin  
 'chinancl' 
 , 
 'false' 
 , 
 null 
 , 
 'sa' 
 , 
 'sa'         
 --用户名 密码 
 
 EXEC  
 sp_serveroption  
 'chinancl' 
 , 
 'rpc out' 
 , 
 true                      
 --启动RPC 

–删除链接登录名


 
 EXEC 
 
 ( 
 'create database text ' 
 )  
 at  
 [chinancl] 
 
 EXEC 
 
 ( 
 ' use text create table text (id int)' 
 )  
 at  
 [chinancl] 

    
 
 exec  
 sp_dropserver  
 'chinancl' 
 , 
 'droplogins'                           
 --删除链接登录名 
    原文作者:樱花花
    原文地址: https://blog.csdn.net/qq_37192571/article/details/108880399
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞