打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
通过SQL Server 2008 访问Oracle 10g

通过SQL Server 2008 访问Oracle 10g

作者: Gnie  来源: 博客园  发布时间: 2010-09-09 21:30  阅读: 270 次  原文链接   全屏阅读  [收藏]  

  准备工作

  事先在需要访问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 数据库。

  创建Linked Server

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

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

  Linked server: 填写Linked Server 名称

  Provider:选择Microsoft OLE DB Provider for Oracle

  Product name:填写Oracle

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

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

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

  访问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 数据库,并做相应的数据调整。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Oracle与SQLserver数据库互建跨库链接
oracle安装目录的各文件夹
SQL 在OPENQUERY中使用参数
如何进行数据库,比如ORACLE,SQL SERVER的逆向工程,将数据库导入到PD中 -...
QT连接SQL Server(ODBC)
利用ASP连接各种数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服