• sql server 使用链接服务器连接Oracle,openquery查询数据


     

    对接问题描述:不知道正式库oracle数据库账户密码,对方愿意在对方的客户端上输入账号和密码,但不告诉我们

    解决方案:使用一台sql server作为中间服务器,可以通过转存数据到sql server,再从sql server同步数据到我方数据库。在sql server 上建立一个链接服务器连接Oracle,通过openquery查询oracle数据

    具体实施方案

    在sql server创建链接服务器,通过链接服务器查询oracle数据,链接服务器对方设置,我方不知道账户和密码。

    创建连接服务器方案如下图:

    1、  确保pl/sql能够登录上oracle,查看pl/sql的联系信息文件tnsnames.ora,找到数据库连接相关信息,如下图:

     

    如图,CUNJK即数据库名字,需要被sql server链接服务器使用

    2、  登录sql server,创建链接服务器,找到链接服务器文职,服务器对象->链接服务器,步骤如下图

     

    访问接口调节oracle的访问接口,服务器对象->链接服务器->访问接口,右键OraCLEDB.Oracle打开属性,勾选允许进程内

     

    3、  创建链接服务器

    右键链接服务器->新建链接服务器,填写创建服务器名字,选择访问接口为oracle,产品名称为Oracle,数据源请填写与pl/sql链接信息相同,

     

    安全性登录,如下图:

    输入Oracle的账户和密码,密码隐藏,我方不会知晓,

     

    服务器选项配置,如下图:

    调节RPC为Ture,RPC Out为True

     

    确定完成。

    4、  建立查询,测试

    查询链接服务器需要使用OPENQUERY函数进行查询,sql请参考SQL server的语法原则,示例如下:

    SELECT top 1 * FROM OPENQUERY(CUNJK,'select * from  cjk_account') a;

    方案总结:能通过sql server查询数据,我方即可通过同步程序连接sql sever进行数据同步

    链接服务器查询  OPENQUERY

     使用sql server链接服务器查询oracle ,会先通过查询sql 查询oracle,缓存到sql server 中,再通过sql server 查询,查询会较慢

    OpenQuery 是SQL Server用来与其他Server交互的一种技术,通过OpenQuery,SQL Server 可以直接访问其他数据库资源。而其他数据库在OpenQuery 表达式中是以Linked Server 存在的

    在OpenQuery内部添加查询条件,比在外面添加查询速度相对较快,在内部添加条件’’(单引号字符串条件)会有限制,’’(单引号必须进行转义),两个双引号,代表一个双引号,示例如下:

    Select from OPENQUERY(R,'select * from  cjk_account where createdate < ''2019-03-17 08:52:55'' ')

    如果对openquery查询还没有弄明白,可参考这篇博文:http://www.cnblogs.com/Dannier/archive/2011/09/21/openquery.html

  • 相关阅读:
    djinn:1 Vulnhub Walkthrough
    面试题:HTTP协议工作原理
    面试题:URI和URL的区别
    面试题:http和https的区别?什么是http无状态协议?什么是本地存储?
    Vue+Element 踩坑记录
    面试题:Vue的生命周期
    面试题:组件封装
    面试题:vuex
    面试题:callback
    面试题---华为机试在线训练:字符串最后一个单词的长度
  • 原文地址:https://www.cnblogs.com/roychenyi/p/10546034.html
Copyright © 2020-2023  润新知