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
sql server 使用链接服务器连接Oracle,openquery查询数据的更多相关文章
- SQL Server的链接服务器(MySQL、Oracle、Ms_sql、Access、SYBASE)
原文:SQL Server的链接服务器(MySQL.Oracle.Ms_sql.Access.SYBASE) 一.使用 Microsoft OLE DB Provider For ODBC 链接MyS ...
- [翻译]——SQL Server使用链接服务器的5个性能杀手
前言: 本文是对博客http://www.dbnewsfeed.com/2012/09/08/5-performance-killers-when-working-with-linked-server ...
- SQL Server 远程链接服务器详细配置
原文:SQL Server 远程链接服务器详细配置[转载] http://hi.baidu.com/luxi0194/blog/item/a5c2a9128a705cc6c2fd7803.html - ...
- sql server 2005 链接服务器:未将服务器 配置为用于 RPC
原文:sql server 2005 链接服务器:未将服务器 配置为用于 RPC RPC: 远程过程调用(Remote Procedure Calls) --LinkedServer.Rpc 属性: ...
- C#连接Oracle数据库查询数据
C#连接Oracle数据库可以实现许多我们需要的功能,下面介绍的是C#连接Oracle数据库查询数据的方法,如果您对C#连接Oracle数据库方面感兴趣的话,不妨一看. using System; u ...
- SQL Server创建链接服务器
1.通过sql语句创建链接服务器,数据是sql server的 EXEC sp_addlinkedserver @server='test', --链接服务器别名,自定义 @srvproduct='' ...
- sql server 2012 链接服务器不能链接sql server 2000的解决方案 ,
本数据源来自 https://www.kafan.cn/edu/922556.html 目的为了备忘 把原来的sql server 2005直接装成了2012,然后在建立链接服务器链接一台sql s ...
- SQL Server 添加链接服务器
背景 在SQL SERVER中,如果我们查询数据库需要关联另外一台数据库中表,在这种情况下我们可以通过添加服务器链接来实现. 案列 方式1.sql server 提供了图形化界面,如下: 右键> ...
- SQLserver通过链接服务器连接oracle
在SQLserver中一直使用的是DTS抽取数据,但是DTS微软只支持到2008,到了2012后就没有这个工具了,现在需要在SQLserver跟Oracle中间建立一个通道,借助这个通道,将Oracl ...
随机推荐
- mac上用ssh登录服务失败的排查方法
ssh -vvv user@ip/ traceroute ip telnet ip 22 ping
- JBoss 实战(2)
转自:https://www.cnblogs.com/aiwz/p/6154591.html JBOSS HTTP的Thread Group概念 JBOSS是一个企业级的J2EE APP Contai ...
- .NET创建WebService服务简单的例子
Web service是一个基于可编程的web的应用程序,用于开发分布式的互操作的应用程序,也是一种web服务 WebService的特性有以下几点: 1.使用XML(标准通用标记语言)来作为数据交互 ...
- 利用CEF山寨一个翻译器
起因 在某些情况下,有将从某种类型的语言翻译成另一种类型语言的需求.比如在生成实体时,可能需要将中文名称转换成英文.于是利用CEFSharp山寨了一个翻译器.效果图如下: CEF简介 CEF全称为Ch ...
- VisualVM监控远程阿里云主机
一.前言 使用VisualVM监控远程主机,主要是要在远程主机上部署JMX服务和jstat服务,jstat服务的部署花了我半天的时间,而且,网上的资基本都是缺胳膊少腿的,没有一篇是一个整体(行得通的) ...
- 使用crontab调度任务
复杂的.分布式的.工作流式的调度可以通过azkaban来进行调度,除了执行调度任务之外,它还能进行定时调度.而对于简单的服务器任务,如执行一个小脚本,发送邮件等,可以使用crontab命令直接进行,在 ...
- oracle数据库逐步学习总结【基础一】
原创作品,转载请在文章开头显眼位置注明出处:https://www.cnblogs.com/sunshine5683/p/10059955.html 一.oracle的基本命令 1.连接命令 用法:c ...
- ORACLEserver实例DB的概念学习理解与总结【进阶一】
个人原创,转自请在文章开头显眼位置注明出处:https://www.cnblogs.com/sunshine5683/p/10048824.html 一.以后看一个oracleserver,可以使用如 ...
- Java Web整合开发王者归来(JSP + Servlet + Struts + Hibernate + Spring) - 读书笔记
第1章 状态码表示响应类型: 保留 表示请求成功地接收 完成请求客户需进一步细化请求 客户错误 服务器错误 Web服务器: Apache服务器,特长是处理静态页面,效率非常高. Tomcat提供对JS ...
- 进程间通信IPC -- 管道, 队列
进程间通信--IPC(Inter-Process Communication) 管道 from multiprocessing import Pipecon1,con2 = Pipe()管道是不安全的 ...