开发者社区> 范大脚脚> 正文

通过SQL Server 2008 访问Oracle 10g

简介:
+关注继续查看

之前写过一篇关于SQL Server 访问MySQL 数据库的文章,最近正好又遇到需要访问Oracle 的情况,将配置过程记录下来也供大家参考。

准备工作

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

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

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

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

ORADB =
  (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTIP)(PORT = 1521))
     (CONNECT_DATA = (SID = DBNAME))
  )

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

sqlplus

创建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 数据库了,查询语法如下:

SELECT * FROM LINKED_NAME..ACCOUNT_NAME.TABLE_NAME;

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

SELECT * FROM ORASVR..ADMIN.JOBS;

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

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

SELECT * FROM OPENQUERY(LINKED_NAME,'SELECT * FROM TABLE_NAME');

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

SELECT * FROM OPENQUERY(ORASVR,'SELECT * FROM JOBS');

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




本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL server (oracle)语句练习案例
SQL server (oracle)语句练习案例
82 0
SQL Server 使用OPENROWSET访问ORACLE遇到的各种坑总结
原文:SQL Server 使用OPENROWSET访问ORACLE遇到的各种坑总结 在SQL Server中使用OPENROWSET访问ORACLE数据库时,你可能会遇到各种坑,下面一一梳理一下你会遇到的一些坑。
1355 0
Oracle 和SQL Server 中的SQL语句使用区别
最近开始接触Oracle,想要了解下同SQL Server使用时的区别。搜寻网上信息找到具体区别分类如下:   一、数据类型比较  类型名称 Oracle  SQLServer  比较  字符数据类型  CHAR  CHAR  都是固定长度字符资料但oracle里面最大度为2...
1404 0
+关注
范大脚脚
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
迁移 ORACLE 最佳实践
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多
相关镜像