• SQL 跨数据库同步数据 、跨数据库跨更新数据


     

    复制代码
      1 --创建链接服务器 
      2 
      3 exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
      4 
      5 exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 ' 
      6 
      7  
      8 
      9 --查询示例 
     10 
     11 select * from ITSV.数据库名.dbo.表名 
     12 
     13  
     14 
     15 --导入示例 
     16 
     17 select * into 表 from ITSV.数据库名.dbo.表名 
     18 
     19  
     20 
     21 --以后不再使用时删除链接服务器 
     22 
     23 exec sp_dropserver  'ITSV ', 'droplogins ' 
     24 
     25  
     26 
     27 --连接远程/局域网数据(openrowset/openquery/opendatasource) 
     28 
     29 --1、openrowset 
     30 
     31  
     32 
     33 --查询示例 
     34 
     35 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
     36 
     37  
     38 
     39 --生成本地表 
     40 
     41 select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
     42 
     43  
     44 
     45 --把本地表导入远程表 
     46 
     47 insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
     48 
     49 select *from 本地表 
     50 
     51  
     52 
     53 --更新本地表 
     54 
     55 update b 
     56 
     57 set b.列A=a.列A 
     58 
     59  from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b 
     60 
     61 on a.column1=b.column1 
     62 
     63  
     64 
     65 --openquery用法需要创建一个连接 
     66 
     67  
     68 
     69 --首先创建一个连接创建链接服务器 
     70 
     71 exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
     72 
     73 --查询 
     74 
     75 select * 
     76 
     77 FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
     78 
     79 --把本地表导入远程表 
     80 
     81 insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
     82 
     83 select * from 本地表 
     84 
     85 --更新本地表 
     86 
     87 update b 
     88 
     89 set b.列B=a.列B 
     90 
     91 FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a  
     92 
     93 inner join 本地表 b on a.列A=b.列A 
     94 
     95  
     96 
     97 --3、opendatasource/openrowset 
     98 
     99 SELECT   * 
    100 
    101 FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 
    102 
    103 --把本地表导入远程表 
    104 
    105 insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 
    106 
    107 select * from
    复制代码

     执行的时候如果报错就执行下面两句  ;

    exec sp_configure 'show advanced options',1
    reconfigure
    exec sp_configure 'Ad Hoc Distributed Queries',1
    reconfigure

    跨表更新表数据

    复制代码
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', 'SERVERSQLEXPRESS' --创建远程数据库连接的存储过程
    
    --exec sp_dropserver  'ITSV ', 'droplogins' --  该行不执行  删除存储过程
     
    --更新本地表 
    update b 
    set b.Levels=a.Levels,b.Plogons=a.Plogons
    FROM openquery(ITSV,  'SELECT * FROM LandSection.dbo.LandLevel') as a  
    inner join [dbo].[landlevel] b on a.ID=b.ID
    复制代码
     
     
     
     
     
    如果有执行错误 Ad Hoc Distributed Queries: 

    启用Ad Hoc Distributed Queries:
    exec sp_configure 'show advanced options',1
    reconfigure
    exec sp_configure 'Ad Hoc Distributed Queries',1
    reconfigure

    关闭Ad Hoc Distributed Queries:
    exec sp_configure 'Ad Hoc Distributed Queries',0
    reconfigure
    exec sp_configure 'show advanced options',0
    reconfigure

  • 相关阅读:
    新发地突发新冠病例,我从北京来赶来为疾控软件开发人员分享Azure DevOps,汗
    Azure DevOps Server:还原被删除的分支
    Azure DevOps Server 拉取请求模板(Pull Request Template)
    Azure DevOps Server:使用Postman批量删除测试用例
    Visual Studio Code:在操作系统文件夹或文件上出现Open with Code菜单
    在Windows XP上访问Azure DevOps Server 2019(TFS)
    将团队项目迁移到另外一个团队项目集合中
    快速排序c++实现 快排C++代码实现
    高等代数(第四版) 王萼芳课后答案
    数据结构题集(C语言版)课后答案+源码严蔚敏、吴伟民编著
  • 原文地址:https://www.cnblogs.com/kelly1314/p/11454250.html
Copyright © 2020-2023  润新知