SQL Server 访问Oracle数据库

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)

SQL Server 访问Oracle数据库_第1张图片

安全选项,填写账号,也就是oracle账号。服务器选项里面,rpc,rpc out设置为true,我这里没有设置,也可以使用。

SQL Server 访问Oracle数据库_第2张图片

访问接口选项。选中允许进程内。

SQL Server 访问Oracle数据库_第3张图片

设置就完毕了 ,就可以进行访问了  。可以发现,oracle的sh.sales表的time_id返回的值,结果精度和Oracle相比还有有点不一样。

SQL Server 访问Oracle数据库_第4张图片

出现的问题,因为类型转换的问题,出现了类似于“链接服务器 "XXX" 的 OLE DB 访问接口 "XXX" 为列提供的元数据不一致,编译时为500,应为1000”之类的错误。原因是nvarchar(500)和varchar(500)的问题。修正后问题解决。

在oracle上查看sqlserver的会话

SQL Server 访问Oracle数据库_第5张图片

end

你可能感兴趣的:(11gR2)