• 当SQL Server数据库遇到Oracle数据交互接口


    一般我们使用C#开发时,往往选择SQL Server数据库与之配合使用,因为使用起来最方便。

    但如果我们需要和第三方厂商的软件进行数据交互时,就有可能碰到对方使用Oracle数据库,并且在某些特定情况下还只能把数据交互的接口放到Oracle上,这时候我们就需要访问Oracle数据库了。

    针对这种情况,我们有两种访问方案:

    1. 直接在软件中增加对Oracle数据库的读写操作
    2. 在SQL Server数据库中建立链接服务器,并通过同义词把接口表当做本地表来访问

    由于访问Oracle时必须安装Oracle客户端,对于方案1来说,不仅需要针对Oracle开发对应的访问代码,还需要在每台安装软件的电脑上装上Oracle客户端,这对软件的部署带来了很大的压力(B/S架构除外);而方案2则仅仅需要在SQL Server所在的电脑上安装Oracle客户端即可。

    而对于访问Oracle数据库的性能和灵活性来说,方案1既可以较快的速度访问,也能使用事务、内置函数等一系列Oracle所拥有的功能;而方案2的访问速度很慢,也不能使用事务。

    作为数据交互接口,我们估计其访问的数据量很小,对性能的要求也不高,所用的操作也就普通的增删改查,不会用到Oracle特有的东西。综合上面的对比分析,再考虑效率,觉得方案2比较适合。

    下面以方案2为例说明一下配置的过程:

    1、安装Oracle客户端

    先到Oracle的官网上下载适用于Windows的Oracle Data Access Components(ODAC),这里使用ODAC112030Xcopy_x64.zip(如果SQL Server不是64位的请选择32位的版本,如ODAC112030Xcopy_32bit.zip)。

    解压并在命令行界面进入解压文件夹,运行“install.bat oledb c:\oracle odac”安装(我们只需要oledb的驱动,并把对应的文件安装到C盘oracle目录下。注意其中的空格)。

     

    在环境变量中为Path添加“C:\oracle;C:\oracle\bin;”到开头。

     

    2、在SQL Server添加链接服务器

    在SQL Server Management Studio中连接到数据库,并在其下的“服务器对象”-“链接服务器”,右键选择“新建链接服务器”。

     

    在常规中填入链接服务器名称:SWAPDB、访问接口:Oracle Provider for OLE DB、产品名称:oracle、数据源:(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ORACLEDB)))

    其中链接服务器名称在建立同义词的时候用到,产品名称可以随便填,数据源中的HOST和SERVICE_NAME改为自己所使用Oracle接口的对应地址与数据库名称。

     

    在安全性中选择“使用此安全上下文建立连接”,填入Oracle数据库所用的登陆账号/密码,点击“确定”建立链接。

     

    在“服务器对象”-“链接服务器”-“访问接口”-“OraOLEDB.Oracle”,右键选择“属性”。

     

    启用“允许进程内”的接口选项。

     

    建立链接服务器后可以通过“服务器对象”-“链接服务器”-“SWAPDB”,右键“测试连接”查看是否成功。

     

    3、在数据库中创建同义词

    在对应数据库的查询窗口中执行“CREATE SYNONYM [dbo].[T_User] FOR [SWAPDB]..[ORAUSER].[T_User]”,这里只能用SQL语句建立同义词,使用图形界面将出错,其中T_User是表名称,SWAPDB是刚才创建的链接服务器名称,ORAUSER是Oracle数据库的用户。

    配置完成后,我们就可以在SQL Server中直接使用“select * from T_User”访问远程Oracle的接口表了

  • 相关阅读:
    TreeView中找鼠标指向的节点
    自己写的一个分页控件源代码
    [JWF]只显示当前用户的WorkItem方法
    [JWF]安装Workflow Server后的中文界面补丁
    [JWF]JWF中调用WebService方法
    [JWF]配置Adobe Form Server Application
    [导入](HOWTO)将一个Xml中的节点复制到别一个Xml的节点上
    [JWF]Form Common button 执行生命周期
    [JWF]Special Buttons 执行生命周期
    [JWF]Participant Interface访问ActiveDirectory
  • 原文地址:https://www.cnblogs.com/fjicn/p/2999832.html
Copyright © 2020-2023  润新知