设为首页 收藏本站
查看: 1105|回复: 0

[经验分享] SQL Server2012创建连接服务器到ORACLE11G

[复制链接]

尚未签到

发表于 2018-6-20 08:00:52 | 显示全部楼层 |阅读模式
SQL Server2012创建连接服务器到ORACLE11G
  SQL SERVER 2012拥有LinkedServer功能。前段时间写了个SQL SERVER同种数据库直接的链接数据库的链接,具体请参考:http://blog.csdn.net/waterxcfg304/article/details/42004753
下面我来介绍下如何通过SQL SERVER 2012来建立ORACLE11G的链接服务器。
一,创建链接服务
  1, 创建链接服务器之前,一定要确保你的SQL SERVER服务器上有ORACLE的客户端程序或者安装了ORACLE数据库服务器。
  下图可以看出我的SQL SERVER服务器上是有ORACLE11G的驱动程序的。
DSC0000.jpg

二,通过图形界面建立链接服务器
  需要填写的信息:
  1, 链接服务器:ORACLE11G,这个是随便写的
  2, 服务器类型:选择ORACLEProvider for OLE DB
  3, 产品名称: 写 ORACLE,一般都写这个
  4, 数据源:ORCL 这ORCL不是随便写的,一定是tnsnames.ora里的服务名,还要注意listener的配置。
  下面是我tnsnames.ora里的配置信息:
  ORCL =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST =R9HDET7.vscsh.com)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = ORCL)
  )
  )
  下面是我的listener.ora的配置:
  SID_LIST_LISTENER=
  (SID_LIST =
  (SID_DESC =
  (SID_NAME = CLRExtProc)
  (ORACLE_HOME =D:\oracle11g\app\product\11.2.0\dbhome_1)
  (PROGRAM = extproc)
  (ENVS ="EXTPROC_DLLS=ONLY:D:\oracle11g\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")
  )
  (SID_DESC =
  (GLOBAL_DBNAME =orcl)
  (ORACLE_HOME =D:\oracle11g\app\product\11.2.0\dbhome_1)
  (SID_NAME =orcl)
  )
  ))
  LISTENER =
  (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST =R9HDET7.vscsh.com)(PORT = 1521))
  )
  )
DSC0001.jpg

三,链接服务器安全性配置
  1,选择—〉使用此安全上下文建立链接,输入登录ORACLE数据库的用户名和密码
DSC0002.jpg

  2,点击[确定],出现如下的错误。
DSC0003.jpg

四,解决[无法创建链接服务器“ORACLE11G”的 OLE DB 访问接口“OraOLEDB.Oracle”的实例。 (.NetSqlClient Data Provider)]的错误
这个问题一般是由于注册表中缺少相关信息造成的,我们只需要补全这部分信息即可解决。
  解决方法如下:
  1, 打开“运行”窗口,输入“regedit”,回车。
  2, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQLServer\MSSQL11.MSSQLSERVER\Providers
  在Providers下面一般来说是看不到OraOLEDB.Oracle这一项的,于是新建这一项。
  在Providers上面右键选择New -> Key,把新增加的项改名为“OraOLEDB.Oracle”
DSC0004.jpg

  3, 为“OraOLEDB.Oracle”这个键新增一个DWORD Value,把名字改为“AllowInProcess”
  4, 为“OraOLEDB.Oracle”这个键新增一个DWORDValue,把名字改为“AllowInProcess”
  5, 把“AllowInProcess”的值改为“00000001”
DSC0005.jpg

  6,改好后的效果如图。修改即刻生效,现在就可以再去访问链接服务器上的Oracle数据库了。
DSC0006.jpg

  7,但是这个时候我再次做链接服务器的时候,还是出现了上面同样的错误提示如下:
DSC0007.jpg

  8,百思考不知道原因啊??突然我发现如下:链接服务器—〉访问接口—〉OraOLEDB.Oracle—〉允许进程内没有勾上,但是我想上面的配置4里已经有(为“OraOLEDB.Oracle”这个键新增一个DWORD Value,把名字改为“AllowInProcess”),不知道为什么不起作用?????,那好吧,我只好手动的勾上了。
DSC0008.jpg

  7, 手动勾上允许进程内
DSC0009.jpg

  8, 再次测试是否连通
DSC00010.jpg

DSC00011.jpg

  从上面的这个图可以看出,已经链接成功,SQL SERVER2012和ORACLE11G服务器之间的链接服务器已经建立成功。
五,下面我来测试如何在SQL SERVER2012里通过上面建立的链接服务器查询ORACLE11G里的表数据。
  1, 在ORACLE数据库里建立一个测试表
DSC00012.jpg

  2, 我用OPENQUERY来查询ORACLE数据库里的数据如下:
  select * from openquery(ORACLE11G,'SELECT * FROM TESTLINKED_SERVER')
DSC00013.jpg

  从上面可以看出,我查询到了我再ORACLE数据库里刚才建立的表和表数据信息。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-526081-1-1.html 上篇帖子: sqlserve2012链接服务器 测试不成功故障 下篇帖子: sql server 2012 链接服务器不能链接sql server 2000的解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表