SQL Server 2008R2,Oracle 11.2.0.4 ,需要通过SQL Server查询Oracle的数据(这里只测试查询,更新及建表没有测试)
实现方法: 通过在SQL Server上建立链接来访问Oracle。
首先,需要在SQL Server所在的服务器上安装Oracle Client,并配置tnsnames.ora .
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.28)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test)
)
)
然后创建链接,链接服务器对应的是链接名称,这里取名ORACLE。访问接口选择“Oracle Provider for OLE DB”,产品名称填写Oracle,数据源是test(注意,这里的test不是tnsnames.ora里面的service name,而是能够进行tnsping test的那个test)
安全选项,填写账号,也就是oracle账号。服务器选项里面,rpc,rpc out设置为true,我这里没有设置,也可以使用。
访问接口选项。选中允许进程内。
设置就完毕了 ,就可以进行访问了 。可以发现,oracle的sh.sales表的time_id返回的值,结果精度和Oracle相比还有有点不一样。
出现的问题,因为类型转换的问题,出现了类似于“链接服务器 "XXX" 的 OLE DB 访问接口 "XXX" 为列提供的元数据不一致,编译时为500,应为1000”之类的错误。原因是nvarchar(500)和varchar(500)的问题。修正后问题解决。
在oracle上查看sqlserver的会话
end