sqlserver 通过链接服务器方式访问oracle
1.环境要求: 在sqlserver 服务器中能访问oracle服务器。 sqlserver 服务器中安装相应的oracle客户端
2. 在oracle客户端中配置好TNS 就是在oracle相应的目录下,添加服务器的 oracle 链接字符串 如:F:appclientAdministrator1product12.1.0client_1 etworkadmin
更改tnsnames.ora 在文件末尾中添加如下内容:
ORCL_TEST /*要使用的服务名称 自定义*/=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.62 /*oracle 服务器地址*/)(PORT = 1521 /*端口地址默认*/))
)
(CONNECT_DATA =
(SERVICE_NAME = topprd /*实例名称*/)
)
)
3. 完成1,2步之后,可以用oracle sql developer 测试1,2 是否成功。
4. 在sqlserver manager studio
新建一个链接服务器:
其中:1 必须, 2 是刚刚建立的服务名称 3,4 可以自定义
再在安全中填写oracle的用户名和密码
容易报错的地方:
无法初始化链接服务器“TEST”的 OLE DB 访问接口“OraOLEDB.Oracle”的数据源对象。
链接服务器"TEST"的 OLE DB 访问接口 "OraOLEDB.Oracle" 返回了消息 "ORA-12154: TNS: 无法解析指定的连接标识符"。 (Microsoft SQL Server,错误: 7303)
解决方法:
按照网上的方案,先后使用了三种方案都没有解决问题(1.修改注册表,2.勾选“允许进程内”,3.设置dcomcnfg)。最后在一篇博客中找到了解决方案,
将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为Local Service就可以了。
如图
1.设置这两个服务的登录身份
参考网址:http://www.cnblogs.com/tiger2soft/p/6954308.html
折腾了好久,终于搞定了!
访问调用存储过程: execute ('oracle_sp_name;') at [192.168.1.50] // exec(' exec 存储过程(?, ?)', 输入参数, @输出参数 out) at 链接服务器名
2应该楼是对的
declare @输出参数 数据类型; exec(' exec 存储过程(?, ?)', 输入参数, @输出参数 out) at 链接服务器名 |