SQL Server2016 通过链接服务 连Oracle

本文档详细介绍了如何在Windows环境下,通过安装ODAC并配置tnsnames.ora文件,实现从SQLServer远程连接Oracle数据库的步骤。包括下载Oracle客户端,安装ODAC,设置环境变量,配置tnsnames.ora文件,以及在SQLServer中创建链接服务器的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做个项目,需要访问Oracle数据库,我的项目数据库SQLServer数据库;

首先明确Oracle数据库给我提供的信息:
IP:10.2.30.XXX:1521
oracle库名:XXXdb
用户名:XXXUser
密码:XXXPWD
视图名:XXXVIew

知识准备:

1、远程连接Oracle数据库,需要本地安装Oracle客户端

2、通过SQL Server 的服务器对象---链接服务器---新建连接来连接

PS:Oracle客户端,而不是Oracle数据库,通过各种查找,终于找到安装包地址http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html;本来准备找个exe安装文件,但是真没有;

接下来就按照百度的文档来,写的不错,copy过来原文地址:http://jingyan.baidu.com/article/e4511cf336ce872b845eafd4.html;特别在tnsnames.ora文件,我自己修改下:

# You can modify the entry below for your own database.
# <data source alias> = Name to use in the connection string Data Source
# <hostname or IP> = name or IP of the database server machine
# <port> = database server machine port to use
# <database service name> = name of the database service on the server

<data source alias> =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <hostname or IP>)(PORT = <port>))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = <database service name>)
    )
  )

步骤1. 下载ODAC安装包

  •     到Oracle官方网站下载ODAC安装包。在网页上找到你要的版本。我下载的是:

    64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows x64

    下载下来的安装包名为:

    ODAC112040Xcopy_64bit.zip

    END

步骤2. 解压缩

  • 解压缩这个zip包,把里面的文件都解压到一个文件夹里,我是解压到D:\ODAC112040Xcopy_64bit,然后打开cmd,进入到这个文件夹。

    这个文件夹里有8个子文件夹,分别是:

    instantclient_11_2:这是Oracle客户端,所有组件的运行都依赖于这个客户端;

    oledb:这是OLE DB组件

    asp.net:这是ASP.NET2组件

    asp.net4:这是ASP.NET4组件

    odp.net4:这是.NET4组件

    odp.net20:这是.NET2组件

    oramts:这是Oracle的MTS服务

    network:这个文件夹不用管,它是用来存放tnsnames.ora文件的,要安装后才能用。

  • 这里我们需要搞清楚这些组件之间的依赖关系。

    instantclient_11_2是最基础的

    oledb依赖于instantclient_11_2

    asp.net依赖于instantclient_11_2和odp.net20

    asp.net4依赖于instantclient_11_2和odp.net4

    odp.net4依赖于instantclient_11_2

    odp.net20依赖于instantclient_11_2

    oramts依赖于instantclient_11_2

    END

步骤3. 安装ODAC包

  • 在cmd中运行install.bat批处理文件:输入"install.bat all D:\OracleClient ODAC"(不含双引号)。这里有几个参数需要特别注意,这里我们传入了三个参数,但最多可以传入四个。

  • 第一个参数:all。all代表安装ODAC112040Xcopy_64bit文件夹下所有的组件和客户端。如果你不需要这么多组件,只用到其中一个,比如只用到了OLE DB组件,就可以像下面这样只安装客户端和这一个OLE DB组件:

    install.bat oledb D:\OracleClient ODAC

  • 第二个参数:D:\OracleClient。这是安装路径,根据自己的实际情况指定,路径中尽量不要有空格和圆括号。

  • 第三个参数:ODAC。这个叫ORACLE HOME NAME,这个参数也可以自己随便指定一个字符串,不一定非得是"ODAC"。这个参数是用来写入注册表的。比如,上面这条语句执行后,会在注册表的以下位置写入:

    HKLM\Software\Oracle\KEY_ODAC

    这"KEY_"后面的ODAC就是你在参数中传入的那个"ODAC"

  • 第四个参数。一般只用前三个参数就够了,在安装组件的时候会自动把它依赖的组件都安装上,但如果你只想安装指定的组件,不想装它所依赖的组件,这时才会用到第四个参数。比如:当你安装asp.net时,如果只用前三个参数,会自动把它所依赖的odp.net20和instantclient_11_2也安装上,但如果你再传入第四个参数"false",如下:

    install.bat asp.net D:\OracleClient ODAC false

    这时就只会安装asp.net,而不会把odp.net20和instantclient_11_2也装上。

    END

步骤4. 设置环境变量(系统变量)

  1. 1

    ORACLE_HOME=D:\OracleClient

    (添加一个环境变量ORACLE_HOME,其值为你的安装路径,比如我这里就是D:\OracleClient)

  2. 2

    PATH=%ORACLE_HOME%;%ORACLE_HOME%\bin;

    (在PATH环境变量中添加下面两个路径,用分号隔开:

    %ORACLE_HOME%;%ORACLE_HOME%\bin;)

    END

步骤5. 根据需要配置tnsnames.ora文件

  • 如果要用组件访问Oracle数据库,那么就要根据需要配置tnsnames.ora文件,并存放于%ORACLE_HOME%\network\admin目录下。

    我的tnsnames.ora文件格式如下,供参考:

    ORA =

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.26.231)(PORT = 1521))

        )

        (CONNECT_DATA =

          (SERVICE_NAME = ora)

        )

      )

    END

卸载ODAC的方法

  1. 1

    用cmd进入到ODAC的安装路径下,然后运行该路径下的uninstall.bat批处理文件。这里也是要注意参数的运用。

    ================================================

    若要卸载掉所有组件,可以这样:

    uninstall.bat all ODAC

    或者

    uninstall.bat all D:\OracleClient

    ================================================

    若要卸载掉某一个指定的组件,可以这样:

    uninstall.bat oledb ODAC

    或者

    uninstall.bat oledb D:\OracleClient

  2. 2

    手动删除掉安装目录,并把之前添加的环境变量也一并删除即可

到此,Oracle数据库客户端,安装完成,此时数据库的数据源驱动应该有了

开始远程连接:

在SQL Server 新建查询:

EXEC master.dbo.sp_addlinkedserver
@server = N'SUFEORACLE'  --要创建的链接服务器名称(名字自拟)
, @srvproduct=N'Oracle'  --产品名称
, @provider=N'OraOLEDB.Oracle'  --OLE DB 字符
, @datasrc=N'Oraclelink'  --数据源   (tnsnames.ora的开头名称)


EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'SUFEORACLE'(名字自拟)
,@useself=N'False'
,@locallogin=NULL
,@rmtuser=N'用户名'
,@rmtpassword='密码'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石头商人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值