更新日期: 2006 年 4 月 14 日
Oracle (Oracle Provider for OLE DB) (8.1.7.3.0) 允许对 Oracle 数据库中的数据进行分布式查询。对 Oracle (Oracle Provider for OLE DB) 的支持如下:
| Oracle 32 位 | 仅支持进程外访问接口 | 
| Oracle 64 位 | 无 | 
创建链接服务器以访问 Oracle 数据库实例
- 确保运行 Microsoft SQL Server 的服务器上的 Oracle 客户端软件处于访问接口所要求的级别。Oracle (Oracle Provider for OLE DB) (8.1.7.3.0) 要求安装 Oracle Client 8.1.7.0。 
- 在运行 SQL Server 的服务器上创建指向 Oracle 数据库实例的别名。有关详细信息,请参阅 Oracle 文档。 
- 执行 sp_addlinkedserver 创建链接服务器,同时指定 OraOLEDB.Oracle 作为 provider_name,并指定 Oracle 数据库的别名作为 data_source。 - 以下示例假定已将别名定义为 - DQORA8:- exec sp_addlinkedserver @server='OrclDB', @srvproduct='Oracle', @provider='OraOLEDB.Oracle', @datasrc='DQORA8'.gif) 安全说明: 安全说明:- 此示例不使用 Windows 身份验证。密码未经加密而进行传输。在保存到磁盘的数据源定义和脚本、备份以及日志文件中可能会看到密码。在此类连接中,切勿使用管理员密码。有关特定于环境的安全指南,请咨询您的网络管理员。 
- 使用 sp_addlinkedsrvlogin 创建从 SQL Server 登录名到 Oracle 登录名的登录名映射。 - 以下示例通过使用 Oracle 登录名 - OrclUsr和密码- OrclPwd,将 SQL Server 登录名- Joe映射到在步骤 3 中定义的链接服务器:- sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', @useself = 'false', @locallogin = 'Joe', @rmtuser = 'OrclUsr', @rmtpassword = 'OrclPwd'
在 Oracle 链接服务器中引用表时,请遵循以下规则:
- 如果在 Oracle 中创建的表名和列名没有使用带引号的标识符,请使用字母全部大写的名称。 
- 如果在 Oracle 中创建的表名和列名使用了带引号的标识符,请使用与在 Oracle 中创建名称时所用字母完全相同的字母大小写形式。 
- INSERT 语句应为表中的所有列提供值,即使表中的某些列可能为 NULL 或具有默认值。 
- 此访问接口不支持将 datetime 文字作为参数按以下格式直接传递: - EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>- 例如,不支持按以下方式使用 datetime 文字 - '14-sep-94':- EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB- 而是应创建一个 datetime 变量,为其赋文字值,然后调用将变量作为参数的 - EXEC:- DECLARE @v1 datetime SET @v1 = CONVERT(datetime,'14-sep-94') EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
限制
SQL Server 不支持对 Oracle 表使用 AVG 聚合函数,因为 Oracle 访问接口返回 OLE DB 类型 DBTYPE_VARNUMERIC,而 SQL Server 不支持 DBTYPE_VARNUMERIC。例如,下面的代码将返回错误:
SELECT AVG(QTY)
FROM ORA..RPUBS.SALES
若要避免错误,请使用 OPENQUERY。例如:
SELECT *
FROM OPENQUERY(ORA,
   'SELECT CAST (AVG(QTY) AS numeric)
   FROM ORA..RPUBS.SALES')
注册表项
若要启用用于 Oracle 的 OLE DB 访问接口,以使用 Oracle 客户端软件,必须从命令行运行注册表文件来修改客户端的注册表。不能同时运行客户端软件的多个实例。下表列出了这些文件,这些文件位于 Microsoft 数据访问组件 (MDAC) 的安装目录结构中。此位置通常为 C:\Program Files\Common Files\System Files\OLE DB。
| Oracle 客户端 | Windows NT 或 9x | Windows 2000 | 
|---|---|---|
| 7.x | mtxoci7x_winnt.reg | mtxoci7x_win2k.reg | 
| 8.0 | mtxoci80_winnt.reg | mtxoci80_win2k.reg | 
| 8.1 | mtxoci81_winnt.reg | mtxoci81_win2k.reg | 
请参阅
概念
与 SQL Server 一起测试过的 OLE DB 访问接口
分布式查询
其他资源
sp_addlinkedserver (Transact-SQL)
帮助和信息
更改历史记录
| 版本 | 历史记录 | 
|---|---|
| 2006 年 4 月 14 日 | 
 | 
| 2005 年 12 月 5 日 | 
 |