创建链接服务器以访问 Oracle 数据库实例 :1、确保运行 SQL Server 的服务器上的 Oracle 客户端软件已达到提供程序所要求的级别。用于 Oracle 的 Microsoft OLE DB 提供程序要求 Oracle 客户端软件支持文件的版本为 7.3.3.4.0 或更高版本,并且 SQL*Net 的版本为 2.3.3.0.4。
2、在运行 SQL Server 的服务器上创建指向 Oracle 数据库实例的 SQL*Net 别名。有关更多信息,请参见 Oracle 文档。
3、执行 sp_addlinkedserver 创建链接服务器,指定 MSDAORA 为 provider_name,指定用于 Oracle 数据库实例的 SQL*Net 别名为 data_ source。 
以下示例假设已将一个 SQL*Net 别名定义为 OracleDB。
sp_addlinkedserver 'OrclDB', 'Oracle', 'MSDAORA', 'OracleDB'
4、使用 sp_addlinkedsrvlogin 创建从 SQL Server 登录到 Oracle 登录的登录映射。 
以下示例通过 Oracle 登录名 OrclUsr 和密码 OrclPwd 将 SQL Server 登录 Joe 映射到步骤 3 中定义的链接服务器:
sp_addlinkedsrvlogin 'OrclDB', false, 'Joe', 'OrclUsr', 'OrclPwd'

解决方案 »

  1.   

    非常感谢,但小弟有不明白
    执行 sp_addlinkedserver 创建链接服务器,指定 MSDAORA 为 provider_name,指定用于 Oracle 数据库实例的 SQL*Net 别名为 data_ source。
    是什么意思
      

  2.   

    错误信息是:
    OLE DB提供程序‘MSDAORA’报错
    什么问题?
      

  3.   

    --如果连接服务器已存在,则首先删除
    if exists (select 1 from master..sysservers where srvname = 'ln_Oracle')
      exec sp_dropserver 'ln_Oracle', 'droplogins'--添加连接服务器
    exec sp_addlinkedserver  @server     = 'ln_Oracle',     --所创建连接服务器的名称
                             @srvproduct = '',
                             @provider   = 'MSDAORA',
                             @datasrc    = 'myDB'           --连接的 Oracle 数据库称--添加连接服务器登录
    exec sp_addlinkedsrvlogin @rmtsrvname  = N'ln_Oracle',  --所创建连接服务器的名
                              @useself     = false,
                              @locallogin  = null,
                              @rmtuser     = N'myUser',      --登录用户
                              @rmtpassword = N'myPWD'        --登录密码--查询 Oracle 中的数据
    select * from ln_Oracle..ARIES.STUDENTS  --注意这里用户名和表名要大写
      

  4.   

    OLE DB提供程序‘MSDAORA’报错
    没遇到过,不知具体原因,查到以下帮助(未深究,不知对你有否帮助):
    若要启用用于 Oracle 的 OLE DB 提供程序以与 Oracle 客户端软件一起使用,必须从命令行运行注册表文件以修改客户端的注册表。不应同时运行客户端软件的多个实例。这些文件都列在下表中并位于同一目录结构中,而该目录结构包含通常在 C:\Program Files\Common Files\System Files\OLE DB 中的 Microsoft 数据访问组件 (MDAC) 安装。
      

  5.   

    我在执行语句的时候报错,信息为
    OLE DB 提供程序 'MSDAORA' 报错。 
    [OLE/DB provider returned message: ORA-12154: TNS: 无法处理服务名
    ]
    这是怎么回事?