SQL用SSMS连接Oracle手记

Posted AhDung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL用SSMS连接Oracle手记相关的知识,希望对你有一定的参考价值。

情况:

  • A机上有SSMS 18.x,
  • B机上有SQL Server 2008 R2数据库,
  • C机上有Oracle Database 11.2.0.4.0数据库

我想在A机用ssms连C机的oracle,一番了解,普遍做法是装ODAC xcopy包,里面有oledb组件,然后就可以在sqlserver的链接服务器里添加oracle数据库。如图:

 

于是我开始在ssms所在电脑装odac,结果提供程序的下拉列表里死活不出现“Oracle Provider for OLE DB”,后来想想也许应该在sql server所在电脑装才对,果然,有了,但紧接着又是连不上的问题:

 

按关键字OraOLEDB.Oracle 7302搜,相同问题一堆,有说勾一下【允许进程内】的,有说把sqlserver服务的启动账户改为【LOCAL SERVICE】的,也有通过若干步骤修改一个叫【MSDAINITIALIZE】的dcom组件的权限的,我都试过了,sqlserver服务器也重启了无数次,odac版本也试过若干个,统统不能解决我的问题。绝望之下,我下了【Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64)】,只勾了里面的oledb(具体叫啥我懒得回看了)一个东西,终于连上了。

总结:

  • 一定要有个SQL Server。光ssms和oracle是建立不起连接的,本质上连接oracle的是sql sever,不是ssms本身。
  • oledb要装在sql server所在电脑上。我是装oracle客户端里的oledb才有用,odac里的没用,估计还是版本问题。

示例:

--注意用户和表名大小写敏感
--用T-SQL的语法
SELECT TOP 10 * from 链接服务器别名..用户.表名

--或者。此写法可以解决当xxx中有timestamp列时上面的写法会报错的问题,参考https://andyspecht.github.io/2017-10-03-linked-server-fail/
select * from openquery(链接服务器别名, \'select * from xxx\'/*plsql*/)

 

-文本-

以上是关于SQL用SSMS连接Oracle手记的主要内容,如果未能解决你的问题,请参考以下文章

手记解决启动SQL Server Management Studio 17时报Cannot find one of more components...的问题

SSMS 2005 连接 SQL SERVER 2008问题

如何在 SSMS 的块中分隔 SQL 代码?

如何用SQL语句修改SQLServer“允许远程连接”设置项?

oracle 第二个数据库实例,用plsql不能连接

SSMS 远程连接SERVER 设置 - Unable to connect to SQL Server instance remotely