SQLServer添加Oracle链接服务器

又一次在项目中用到了在SQLServer添加Oracle链接服务器,发现之前文章写的也不太好使,那就再总结一次吧。

1、安装OracleClient

安装64位,多数SQLServer是64位,所以OracleClient也安装64位的;

再一个一般安装的Oracle11g

2、修改tnsnames.oRA

添加需要链接Oracle数据的连接串,如:

test =
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST =Oracle数据库服务器ip或机器名)(PORT = 1521))
 (CONNECT_DATA =
 (SERVER = DEDICATED)
 (SERVICE_NAME = Oracle服务ID)
 )
 )

3、尝试通过SQLDeveloper连接

这个需要安装java,运行SQLDeveloper需要选择java.exe路径,而且这里需要是32位的java SDK

这个时候可能会提示“ORA-12638: 身份证明检索失败”,需要修改sqlnet.ora

这是由于Oracle的认证方式导致的,使用了本地操作系统认证(NTS),修改为口令文件认证(NONE)即可

SQLServer添加Oracle链接服务器_第1张图片

这个时候SQLDeveloper可以正常登录了

4、SQLServer创建链接服务器

SQLServer添加Oracle链接服务器_第2张图片

其中:提供程序选择Oracle那一项,产品名称填写Oracle,数据源填写tnsnames.oRA配置的连接名,访问接口字符串空着。

SQLServer添加Oracle链接服务器_第3张图片

左侧点击“安全性”,右边选择使用此安全上下文建立连接,输入连接Oracle数据的账户、密码。

确定,但是连接可能提示“无法从链接服务器"TEST"的 OLE DB 访问接口OraOLEDB.Oracle"获取所需的接口

SQLServer添加Oracle链接服务器_第4张图片

访问接口--Oracle Provider for OLE DB,勾选允许进程内,问题解决。

5、一个问题的说明

一开始我在本地测试可以了,但是到了正式环境发现个问题,我用SQLDeveloper可以连上Oracle数据库,但是通过命令行sqlplus 用户名/密码@ora文件的连接名,一直不行,提示“OLEDB 访河接口 oraoLEDB.Orade"返回了消息ORA-12514: TNS: 监听程常当箭无法识别连接描述符中请求的服务”。(Microsoft soL server,错误:7303)”

SQLServer添加Oracle链接服务器_第5张图片

整好那边有个高手,让改了下ora文件的SERVICE_NAME,再去SqlServer看链接服务器,瞬间测试连接成功。

其实我们多数时候通过SQLDeveloper连接Oracle数据库,是用的SID

SQLServer添加Oracle链接服务器_第6张图片

借助上面思路,试了下,改为服务名,还是用SID的值,发现连不上;服务名改为ora文件人家让改的值,可以通。

看来确实还是有不一样的。

get,但还未知其所以然。

查了下,大概意思:这俩默认可以一样也可以不一样,SID实例ID,服务名称就是服务名称了。

可以实例ID不一样,但是服务名称一样,即多个服务器节点一个数据库。

先这样,以后理解多了,再完善。

你可能感兴趣的:(SQL,Server,数据库,Oracle,sqlserver,oracle,链接服务器)