先参考一下:
C. 使用用于 Oracle 的 Microsoft OLE DB 提供程序
此示例创建一台名为 LONDON Mktg 的链接服务器,该服务器使用用于 Oracle 的 Microsoft OLE DB 提供程序,并且假设此 Oracle 数据库的 SQL*Net 别名为 MyServer。USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
   @server = 'LONDON Mktg',
   @srvproduct = 'Oracle',
   @provider = 'MSDAORA',
   @datasrc = 'MyServer'
GO

解决方案 »

  1.   

    用于 Oracle 的 Microsoft OLE DB 提供程序
    用于 Oracle 的 Microsoft OLE DB 提供程序使分布式查询得以查询 Oracle 数据库中的数据。说明  从安装在 Microsoft Windows® 98 上的 SQL Server 实例执行分布式事务时,Oracle 客户端软件不支持使用用于 Oracle 的 Microsoft OLE DB 提供程序进行分布式查询。
    创建链接服务器以访问 Oracle 数据库实例 确保运行 SQL Server 的服务器上的 Oracle 客户端软件已达到提供程序所要求的级别。用于 Oracle 的 Microsoft OLE DB 提供程序要求 Oracle 客户端软件支持文件的版本为 7.3.3.4.0 或更高版本,并且 SQL*Net 的版本为 2.3.3.0.4。
    在运行 SQL Server 的服务器上创建指向 Oracle 数据库实例的 SQL*Net 别名。有关更多信息,请参见 Oracle 文档。
    执行 sp_addlinkedserver 创建链接服务器,指定 MSDAORA 为 provider_name,指定用于 Oracle 数据库实例的 SQL*Net 别名为 data_ source。 
    以下示例假设已将一个 SQL*Net 别名定义为 OracleDB。sp_addlinkedserver 'OrclDB', 'Oracle', 'MSDAORA', 'OracleDB'使用 sp_addlinkedsrvlogin 创建从 SQL Server 登录到 Oracle 登录的登录映射。 
    以下示例通过 Oracle 登录名 OrclUsr 和密码 OrclPwd 将 SQL Server 登录 Joe 映射到步骤 3 中定义的链接服务器:sp_addlinkedsrvlogin 'OrclDB', false, 'Joe', 'OrclUsr', 'OrclPwd'每个 Oracle 数据库实例仅有一个名称为空的目录。Oracle 链接服务器中的表必须使用四部分名称格式 OracleLinkedServerName..OwnerUserName.TableName 进行引用。例如,以下 SELECT 语句引用 Oracle 用户 MARY 在 OrclDB 链接服务器映射的服务器上所拥有的表 SALES。SELECT *
    FROM OrclDB..MARY.SALES在 Oracle 链接服务器中引用表时,请使用以下规则: 如果在 Oracle 中创建的表名和列名没有引用的标识符,请全部使用大写字母名称。
    如果在 Oracle 中创建的表名和列名有引用的标识符,请全部使用与 Oracle 中创建名称时相同的字母大小写格式。
    INSERT 语句应为表中的所有列提供值,即使表中的某些列为 NULL 或有默认值。 
    注册表项
    若要启用用于 Oracle 的 OLE DB 提供程序以与 Oracle 客户端软件一起使用,必须从命令行运行注册表文件以修改客户端的注册表。不应同时运行客户端软件的多个实例。这些文件都列在下表中并位于同一目录结构中,而该目录结构包含通常在 C:\Program Files\Common Files\System Files\OLE DB 中的 Microsoft 数据访问组件 (MDAC) 安装。Oracle 客户端 Windows NT 或 9x Windows 2000 
    7.x mtxoci7x_winnt.reg mtxoci7x_win2k.reg 
    8.0 mtxoci80x_winnt.reg mtxoci80x_win2k.reg 
    8.1 mtxoci81x_winnt.reg mtxoci81x_win2k.reg