原文地址:http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html

之前写过一篇关于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 数据库。

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

通过SQL Server 2008 访问Oracle 10g的更多相关文章

  1. SQL SERVER 2008向ORACLE 11G迁移示例

    来源于:http://www.cnblogs.com/hiizsk/ 由SQL SERVER 2008向ORACLE 11G迁移过程记录之一-表 使用Oracle Sql Developer将SQL ...

  2. SQL Server 2008创建oracle链接服务器(心得)

    操作系统是32位的情况下,曾经没费太多时间创建好了到oracle的链接服务器.主要要点就是: 1.安装oracle精简客户端.当时我用的是版本比较低的“oracle9i310-客户端简化版”,安装好了 ...

  3. 通过SQL Server 2008 访问MySQL(转)

    在公司中经常会遇到部署多种数据库环境的情况,对于开发人员来说经常在不同数据库之间转换确实有些繁琐,本篇将介绍从SQL Server 操作MySQL 数据库的方法. 数据库测试环境 1. SQL Ser ...

  4. 【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件,需要用不同的驱动程序来实现. 在32位的机器 ...

  5. SQL Server 2008 R2 链接 Oracle 10g

    首先sqlserver 链接oracle可以通过两个访问接口: “MSDAORA” 和“OraOLEDB.Oracle” 1.“MSDAORA”访问接口是由Microsoft OLE DB Provi ...

  6. 使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g

    ORACLE官方提供的Sql Developer自带的Oracle Migration Workbench. 什么是Oracle SQL Developer?在官方页面上,是这样介绍它的: Oracl ...

  7. 实现SQL Server 2008 Reporting Services匿名访问报表有两种方法

    一.通过修改SQL Server 2008的配置文件,去掉Windows的验证. 1.首先我们找到SQL安装目录下的两个Web.config配置文件,默认安装目录分别是(C:\Program File ...

  8. SQL Server 2008通过LinkServer操作ORACLE

    时光荏苒~~ 最近项目有需求需要通过SQL Server2008中的数据自动更新到ORACLE中,其实,一开始肯定会想到触发器,因为可以保证实时性. 方案一: 首先,我很确定的一件事情就是MSSQL中 ...

  9. 【关于服务器端SQL Server 2008的设置】 使其他客户端机可通过ODBC数据源可访问

    服务器系统:Server 2003 数据库:SQL Server 2005 服务器配置:开启服务:server.workstation(这两个服务对于提供局域网共享有很大作用) 关闭防火墙 开启gue ...

随机推荐

  1. [转]微擎应用笔记3--manifest.xml文件使用说明

    本文转自:https://blog.csdn.net/seven_north/article/details/79508121 微擎在安装或卸载模块时会根据manifest.xml生成(或删除)数据库 ...

  2. [转]bootstrapValidator.js 做表单验证

    本文转自:https://www.cnblogs.com/nele/p/5493414.html 作者:@nele本文为作者原创,转载请注明出处:https://www.cnblogs.com/nel ...

  3. WebForm 【发送邮件】

    C#实现简单的SmtpClient发送邮件 分析 需要什么 发送邮件     --       发送内容         --      接收邮件 流程(各功能都适用) 创建对象    --     ...

  4. Django Rest framework 之 序列化

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  5. Harbor 搭建

    环境:centos7.4 docker-ce 18.06.0-ce docker-compose version 1.18.0 harbor 版本: 1.5.2 harbor 安装参考 https:/ ...

  6. 消息队列&Celery&RabbitMQ&zeromq

    一.消息队列 什么是消息队列? “消息队列”是在消息的传输过程中保存消息的容器. “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象. 消息 ...

  7. jquery绑定点击事件的三种写法

    一.用jquery动态绑定点击事件的写法 部分代码: <script type="text/javascript"> $(document).ready(functio ...

  8. SAP 官网中文帮助文件&BP中文资料汇总

    系统 描述 版本 连接 SAP ME  制造执行 SAP Manufacturing Execution (SAP ME) 15.0 点击我 SAP ECC EHP6 财务部分 SAP ERP 6.0 ...

  9. Python中应用虚拟环境

    安装pip sudo apt-get install python3-dev sudo apt install python3-pip 安装virtualenv工具 sudo apt-get inst ...

  10. Android学习笔记----天地图API开发之UnsatisfiedLinkError

    由于在jniLibs目录下移除了x86的相关so文件,后来又因为需要在PC模拟器上调试,将该文件夹恢复后,增加了天地图的sdk,却忘记将libMapEngine.so文件同时拷贝至x86目录下,导致如 ...