




























重要说明:本文包含有关如何修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 (http://support.microsoft.com/kb/256986/ ) Microsoft Windows 注册表说明
本文分步介绍了如何设置从运行 Microsoft SQL Server 的计算机到 Oracle 数据库的链接服务器,还针对您在设置到 Oracle 的链接服务...
本文分步介绍了如何设置从运行 Microsoft SQL Server 的计算机到 Oracle 数据库的链接服务器,还针对您在设置到 Oracle 的链接服务器时可能遇到的常见错误提供了基本的故障排除步骤。
Microsoft Windows NT、 Oracle Microsoft Windows 95、 Client Windows 98 和 Windows 98 SE Microsoft Windows 2000 -------------------------------------------------------------------------- 7.x [HKEY_LOCAL_MACHINE\SOFTWARE [HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\TransactionServer Microsoft\MSDTC\MTxOCI] \Local Computer\My Computer] "OracleXaLib"="xa73.dll" "OracleXaLib"="xa73.dll" "OracleSqlLib"="SQLLib18.dll" "OracleSqlLib"="SQLLib18.dll" "OracleOciLib"="ociw32.dll" "OracleOciLib"="ociw32.dll" 8.0 [HKEY_LOCAL_MACHINE\SOFTWARE [HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Transaction Server \Microsoft\MSDTC\MTxOCI] \Local Computer\My Computer] "OracleXaLib"="xa80.dll" "OracleXaLib"="xa80.dll" "OracleSqlLib"="sqllib80.dll" "OracleSqlLib"="sqllib80.dll" "OracleOciLib"="oci.dll" "OracleOciLib"="oci.dll" 8.1 [HKEY_LOCAL_MACHINE\SOFTWARE [HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Transaction Server \Microsoft\MSDTC\MTxOCI] \Local Computer\My Computer] "OracleXaLib"="oraclient8.dll" "OracleXaLib"="oraclient8.dll" "OracleSqlLib"="orasql8.dll" "OracleSqlLib"="orasql8.dll" "OracleOciLib"="oci.dll" "OracleOciLib"="oci.dll"
-- Adding linked server (from SQL Server Books Online):
/* sp_addlinkedserver [@server =] 'server'
[, [@srvproduct =] 'product_name']
[, [@provider =] 'provider_name']
[, [@datasrc =] 'data_source']
[, [@location =] 'location'] [, [@provstr =] 'provider_string']
[, [@catalog =] 'catalog']
*/
EXEC sp_addlinkedserver 'Ora817Link', 'Oracle', 'MSDAORA', 'oracle817'
-- Adding linked server login:
/* sp_addlinkedsrvlogin [@rmtsrvname =] 'rmtsrvname'
[,[@useself =] 'useself']
[,[@locallogin =] 'locallogin']
[,[@rmtuser =] 'rmtuser']
[,[@rmtpassword =] 'rmtpassword']
*/
EXEC sp_addlinkedsrvlogin 'Ora817Link', 'FALSE',NULL, 'scott', 'tiger'
-- Help on the linked server:
EXEC sp_linkedservers
EXEC sp_helpserver
select * from sysservers注意:如果使用用于 Oracle 的 Microsoft ODBC 驱动程序,则可以使用 @datasrc 参数指定 DSN 名称。对于无 DSN 的连接,则通过 @provstr 参数提供提供程序字符串。如果使用用于 Oracle 的 Microsoft OLE DB 提供程序,则请将 TNSNames.Ora 文件中配置的 Oracle 服务器别名用于 @datasrc 参数。有关更多信息,请参见 SQL Server 联机丛书中的“sp_addlinkedserver”主题。
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。
要检索有关在执行分布式查询时遇到的错误的扩展信息,可以使用下面两种方法之一。
Interface::Method failed with hex-error code.
下面列出了可能发生的十个常见错误信息以及如何对这些错误信息进行故障排除的方法。
注意:有关与性能相关的问题,请搜索 SQL Server 联机丛书中的“Optimizing Distributed Queries”(优化分布式查询)主题。
Error 7399:OLE DB provider '%ls' reported an error.%ls
"ORA-12154:TNS:could not resolve service name"
"The Oracle(tm) client and networking components were not found.These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 (or greater) client software installation"
259959 (http://support.microsoft.com/kb/259959/ ) INFO:对使用 ODBC 驱动程序和 OLE DB 提供程序的 Oracle 服务器调试连接问题的技术
Error 7302:Could not create an instance of OLE DB provider 'MSDAORA'
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
Error 7303:Could not initialize data source object of OLE DB provider 'MSDAORA'.[OLE/DB provider returned message:ORA-01017:invalid username/password; logon denied] OLE DB error trace [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80040e4d].
Error 7306:Could not open table ' %ls' from OLE DB provider 'MSDAORA'.The specified table does not exist.[OLE/DB provider returned message:Table does not exist.][OLE/DB provider returned message:ORA-00942:table or view does not exist] OLE DB error trace [OLE/DB Provider 'MSDAORA' IOpenRowset::OpenRowset returned 0x80040e37:The specified table does not exist.].
Error 7312:Invalid use of schema and/or catalog for OLE DB provider '%ls'.A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog and/or schema.
Error 7313:Invalid schema or catalog specified for provider '%ls'.
Err 7314:OLE DB provider '%ls' does not contain table '%ls'
在 Oracle 端,未使用双引号创建的表或列以大写形式存储。如果用双引号将表或列引起来,则表或列按原样存储。
下面的调用显示了 Oracle 架构中是否存在表。此调用还显示了确切的表名。
sp_tables_ex @table_server=Ora817Link, @table_schema='your_schema_name'240340 (http://support.microsoft.com/kb/240340/ ) PRB:对 Oracle 进行 SQL 分布式查询导致“Could not open table”(未能打开表)错误
Error 7413:Could not perform a Windows NT authenticated login because delegation is not available.
Msg 18456, Level 14, State 1, Line 1 Login failed for user '\'.
该错误信息表明,在没有显式的登录映射的情况下,您试图对 Microsoft Windows 验证登录执行分布式查询。在不支持安全委派的操作系统环境中,Windows NT 验证登录需要显式映射到使用 sp_addlinkedsrvlogin 创建的远程登录帐户和密码。
Error 7354:OLE DB provider 'MSDAORA' supplied invalid metadata for column '%ls'.The data type is not supported.
243027 (http://support.microsoft.com/kb/243027/ ) FIX:Oracle 中的数字列导致错误 7354
Error 7356:OLE DB provider 'MSDAORA' supplied inconsistent metadata for a column.Metadata information was changed at execution time.
251238 (http://support.microsoft.com/kb/251238/ ) PRB:分布式查询返回错误 7356 及 MSDAORA
Error 7391:The operation could not be performed because the OLE DB provider 'MSDAORA' does not support distributed transactions.OLE DB error trace [OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]
注意:如果注册表项全都正确,将会加载 MtxOCI.dll 文件。如果 MtxOCI.dll 未加载,则您无法使用用于 Oracle 的 Microsoft OLE DB 提供程序或 Microsoft ODBC 驱动程序对 Oracle 执行分布式事务。如果您正在使用第三方提供程序并且收到错误 7391,请验证您正在使用的 OLE DB 提供程序是否支持分布式事务。如果 OLE DB 提供程序确实支持分布式事务,请验证 Microsoft 分布式事务协调器 (MSDTC) 正在运行。
Error 7392:Could not start a transaction for OLE DB provider 'MSDAORA'.OLE DB error trace [OLE/DB Provider 'MSDAORA' ITransactionLocal::StartTransaction returned 0x8004d013:ISOLEVEL=4096].
OLE DB 提供程序返回错误 7392,因为对于此会话只能有一个事务处于活动状态。该错误表明,在连接处于显式或隐式事务中,且 OLE DB 提供程序不支持嵌套事务时,您试图对 OLE DB 提供程序执行数据修改语句。SQL Server 需要这种支持,以便在某些错误情况下,它可以终止数据修改语句的影响,同时继续进行事务处理。
如果 SET XACT_ABORT 为 ON,则 SQL Server 不需要 OLE DB 提供程序中的嵌套事务支持。因此,在显式或隐式事务中对远程表执行数据修改语句之前,请将 SET XACT_ABORT 设为 ON。这样做的目的是为了防止您正在使用的 OLE DB 提供程序不支持嵌套事务。有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 244661 (http://support.microsoft.com...
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
244661 (http://support.microsoft.com/kb/244661/ ) INFO:Microsoft Oracle ODBC 驱动程序和 OLE DB 提供程序的局限性
259959 (http://support.microsoft.com/kb/259959/ ) INFO:对使用 ODBC 驱动程序和 OLE DB 提供程序的 Oracle 服务器调试连接问题的技术
239719 (http://support.microsoft.com/kb/239719/ ) INFO:用于 Oracle w.r.t Oracle 8.x 的 Microsoft ODBC 驱动程序/OLE DB 提供程序的支持性
193893 (http://support.microsoft.com/kb/193893/ ) 关于与 Microsoft Transaction Server 和 COM+ 组件一起使用 Oracle 的信息
191168 (http://support.microsoft.com/kb/191168/ ) INFO:错误“-2147168246 (8004d00a)”无法登记调用对象的事务
有关如何将链接服务器与 DB2 一起使用的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
218590 (http://support.microsoft.com/kb/218590/ ) INF:为用于 DB2 的 Microsoft OLE DB 提供程序配置数据源
216428 (http://support.microsoft.com/kb/216428/ ) 配置用于 DB2 的 Microsoft ODBC 驱动程序
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。