第二种方式是可以利用sql 提供的存储过程sp_addlinkedserver and sp_addlinkedsrvlogin实现,一样的,图形化的界面也是调用了这两个过程,具体的配置信息可以参考如下sql server提供的帮助信息:
用于 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