透过SQL Server 2008访问Oracle 11g的配置方法



 



准备工作

事先在需要访问Oracle 数据库的主机上完成以下工作:

1. 安装SQL Server 数据库:SQL Server 2008 R2 Express

2. 安装Oracle 客户端访问程序:Oracle 11g Client

3. 配置Oracle 客户端tnsnames.ora 文件,其中需要注意文件中的数据库别名“ORADB”,该名称在下文创建Linked Server 时将会使用到。

  1. ORADB =  
  2.   (DESCRIPTION =  
  3.      (ADDRESS (PROTOCOL TCP)(HOST HOSTIP)(PORT 1521))  
  4.      (CONNECT_DATA (SID DBNAME))  
  5.   

4. 确保主机可以通过SQLPlus 访问远程Oracle 数据库。

透过SQL <wbr>Server <wbr>2008访问Oracle <wbr>11g的配置方法

创建Linked Server

打开SQL Server Management Studio 进入Server Objects 列表,右键Linked Servers,点击“New Linked Server...”

new

在General 界面中填写下面几项内容:

Linked server: 填写Linked Server 名称

Provider:选择Microsoft OLE DB Provider for Oracle

Product name:填写Oracle

Data source:填写上面提到的数据库别名ORADB

input

点击Security ,点选“Be made using this security context”,假设Oracle 数据库有一个名称为admin 的用户ID,在“Remote login”中输入访问帐号,点击“OK”结束创建。

account

完成后Linked Servers 中会看到刚创建的Oracle 数据库链接。

Done

访问Oracle

接下来就可以在SQL Server 端访问Oracle 数据库了,查询语法如下:

  1. SELECT FROM LINKED_NAME..ACCOUNT_NAME.TABLE_NAME; 

结合上面的实例,假如要查询admin 用户下jobs 表的内容,则相应SQL 语句应为:

  1. SELECT FROM ORASVR..ADMIN.JOBS; 

使用上述方法进行数据查询时,若Oracle 表有NUMBER 列时会出现转化错误,这时可以将NUMBER 类型转化为字符串(也有将该列属性修改成NUMBER(10),为NUMBER 列设定好位数)。考虑到View 查询等因素个人感觉还是转为字符串的方式较为通用。

当然如果查询的列过多,每个NUMBER 列都转为VARCHAR 的话工作量也的确不小,这时最好的方法就是使用OPENQUERY 函数:

  1. SELECT FROM OPENQUERY(LINKED_NAME,'SELECT FROM TABLE_NAME'); 

按照OPENQUERY 的语法上面SQL 语句应变为:

  1. SELECT FROM OPENQUERY(ORASVR,'SELECT FROM JOBS'); 

这样我们就可以在SQL Server 端方便的访问Oracle 数据库,并做相应的数据调整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值