zoukankan      html  css  js  c++  java
  • 链接服务器 不同服务器查询,插入数据

    最近用到了从另一个服务器插入数据到本地,使用了链接服务器,做一个链接服务器总结。


    从服务器把用户表 user 的数据插入到本地的 user 表

    --创建链接服务器

    EXEC sp_addlinkedserver '链接服务器名称','','SQLOLEDB','IP地址' 

    /*

    例如:EXEC sp_addlinkedserver 'Linked','','SQLOLEDB','192.0.0.1' 

    */


    EXEC sp_addlinkedsrvlogin '链接服务器名称','false',null,'账户名','密码'

    /*

    例如:EXEC sp_addlinkedsrvlogin 'Linked','false',null,'sa','123'

    */


    --还可以使用windows验证方式登录,没试过。。。(当前用户账户密码和服务器一致,似乎是- - ...)


    -- 查询示例
    select *  from 链接服务器名称.数据库.dbo.表名 


    /*例如:
     select *  from LinkName.Test.dbo.dept   
     */


    -- 导入本地表示例
    select * into 本地表 from 链接服务器名称.数据库.dbo.表名 


    /*例如:
     select * INTO DEPT from LinkName.TestDB.dbo.dept   
     */



    -- 以后不再使用时删除链接服务器 如果指定 droplogins,则在删除链接服务器之前要删除登录名映射

    exec sp_dropserver 'LinkName' , 'droplogins' 



    -- 查询示例
    select *  from 链接服务器名称.数据库.dbo.表名 


    /*例如:
     select *  from LinkName.Test.dbo.dept   
     */


    -- 导入本地表示例
    select * into 本地表 from 链接服务器名称.数据库.dbo.表名 


    /*例如:
     select * INTO DEPT from LinkName.Test.dbo.dept   
     */


     --更新
     update LinkName.Test.dbo.dept set deptid = 值 wehre 字段名 = '条件' 
     
     
     --删除
     delete LinkName.Test.dbo.dept where 字段名 = '条件'




     
    -- 通过行集函数(OPENQUERY/OPENROWSET/OPENDATASOURCE)操作方法



    -- OPENQUERY 需要使用链接服务器


    --查询示例
    SELECT * FROM OPENQUERY(Linked,'select * from 数据库名.架构名.表名')
     /* 
     示例:
    SELECT * FROM OPENQUERY(Linked,'select * from Test.dbo.dept ')
      */
     
     
     --插入数据
    INSERT OPENQUERY(LinkName, 'SELECT *  FROM 数据库名.架构名.表名') (列,列...)
        SELECT 列,列... FROM 本地表
    /* 
     示例:
    INSERT OPENQUERY(Linked,'select * from Test.dbo.dept ') (deptid,deptname)
    SELECT DEPTID,DEPTNAME FROM DEPT
      */


    --更新本地表
     UPDATE OPENQUERY(LinkName, 'SELECT * FROM 数据库名.架构名.表名')  SET 字段='值' WHERE 字段='条件'
    /* 
     示例:
     UPDATE OPENQUERY(LinkName, 'SELECT * FROM Test.dbo.dept ')  SET DeptName='小辛' WHERE DeptId=1
     */
     
     
     --删除示例
     DELETE OPENQUERY(LinkName, 'SELECT * FROM 数据库名.架构名.表名')  WHERE 字段名='条件'
    /* 
     示例:
     DELETE OPENQUERY(LinkName, 'SELECT * FROM Test.dbo.dept')  WHERE DeptName = '小辛'
     */
     
     
     
     
     --函数 OPENROWSET (不需要链接服务器)


    --查询示例
    SELECT * FROM OPENROWSET ( 'SQLOLEDB' , 'SERVER=IP地址' ; '用户名' ; '密码',数据库名.架构名.表名 )
     
     --或者
     SELECT * FROM OPENROWSET ( 'SQLOLEDB' , 'SERVER=IP地址' ; '用户名' ; '密码','SELECT * FROM Test.dbo.dept' )
     
     --插入,更新,删除 请参考 OPENQUERY方法使用




     
    --OPENDATASOURCE方法(不需要用到链接名。如果连接的实例名不是默认的,需要在"sql服务器名或IP地址"后加上"/实例名")

     

    SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'server=sql服务器名或IP地址;uid=用户名;pwd=密码').数据库名.架构名.表名


    --或者
    SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Date Source=sql服务器名或IP地址;uid=用户名;pwd=密码').数据库名.架构名.表名
    /* 
    例如:
    SELECT TOP 100 * FROM OPENDATASOURCE ( 'SQLOLEDB' , 'Server=192.0.0.1;uid=TestDB;pwd=123').TestDb.dbo.Dept
      */


    --插入,更新,删除 请参考 OPENQUERY方法使用





    推荐这篇文章,博主写的很详细!可以深入了解!
    SQL不同服务器数据库之间的数据操作整理(完整版)


      


  • 相关阅读:
    浏览器20年图说简史
    CF1437D Solution
    CF1446B Solution
    CF1444A Solution
    CF1437C Solution
    让您的网站拥有MSDN资源库搜索功能[转摘MSDN]
    自定义web part版面变形的原因
    SPS中模板保存数据库的位置
    利用配置文件自定义站点
    VS.NET2003 开发环境 生成样式表 和 自动书写HTML对象模型
  • 原文地址:https://www.cnblogs.com/yixin-bokeyuan/p/9142300.html
Copyright © 2011-2022 走看看