无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

简介:

最近在做一个小项目,语言VS2005,C#,数据库Oracle9i,但是为了兼容以前数据库SqlServer2005,以便于数据库版本的切换,事务中,仍然使用 
System.Transaction.Transcope的分布式事务,但是事务调试时出现了 无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 
这个错误,

解决方法:

Oramts.dll 文件公开登记 Oracle 连接所涉及到在通过 Microsoft 分布式事务处理协调器 (MSDTC) 启动的事务中的公共 API。 在事务处理环境中运行时, System.Data.OracleClient 程序集调用这些 API。

System.Data.OracleClient 程序集的早期版本不支持分布式的事务。 因此,该依赖项不存在 System.Data.OracleClient 程序集版本 1.1 之前。

当您执行分布式的事务活动时 System.Data.OracleClient 程序集使用 Oramts.dll 文件。 当您尝试执行 nontransacted 活动时, 或者当您使用本地事务时不加载 System.Data.OracleClient 程序集。 如果 Oracle 客户端连接软件,在安装过程中不包括此组件,您尝试使用分布式的事务与 System.Data.OracleClient ,您可能会收到以下错误信息: 
System.Data.OracleClient: Unable to load DLL (oramts.dll) 
与 Oracle 客户端连接组件安装在 Oramts.dll 文件。 它不被分发使用任何 Microsoft 软件。 Oramts.dll 文件不是作为默认安装包含在安装 Oracle 客户端连接软件时。 若要安装此组件必须单击以选中 Oracle Services for Microsoft Transaction Server 在安装 Oracle 客户端连接软件时复选框。 有关这些组件的信息,请访问下面的 Oracle Web 站点: 
http://www.oracle.com/technology/tech/windows/ora_mts/index.html (http://www.oracle.com/technology/tech/windows/ora_mts/index.html)

先到Oracle官方网站上面下载ODAC92070.exe因为这是为了支持分布式事务的一个数据库连接包,Oracle跟微软官方网站上有说明,Oracle不支持单独将oramts.dll分布的方式,就是说这个包不能单独下载,只能下载这个安装, 
安装完成后,

再运行代码,仍就事务出错,报的错误一样,查看环境变量中的path,并在Oracle92Home目录,查找oramts.dll已经存在,

后来在一网站(英文的)不记得了,说Oramts.dll这个dll是因为在debug模式下面编译的,所以不能正常使用

通过DependencyWalker查看依赖项,发现少了msvcrtd.dll,这个在装上Vs6.0,VC++的机器上有,这是一个VC的编译器文件,

然后下载一个msvcrtd.dll拷贝到C:\windows\System32下面,再试分布式事务,成功

希望这编文章能给刚开始使用VS2005+Oracle数据库的一些朋友一点点帮助.

当然你要是使用Oracle10g,Oracle11g相关版本,只要下载对应的Oracle Data Access Components (ODAC)数据访问组件就可解决 
Oracle数据库客户端访问组件下载地址: 
http://www.oracle.com/technology/software/tech/windows/odpnet/index.html



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2011/05/31/2064232.html,如需转载请自行联系原作者

目录
相关文章
|
Java C语言 Python
Python安装Jnius库报错DLL load failed:找不到模块
Python安装Jnius库报错DLL load failed:找不到模块
312 0
Python安装Jnius库报错DLL load failed:找不到模块
|
11月前
|
关系型数据库 MySQL
成功解决:由于找不到 MSVCP100D.dll, 无法继续执行代码。重新安装可能会解决此问题。
成功解决:由于找不到 MSVCP100D.dll, 无法继续执行代码。重新安装可能会解决此问题。
|
Windows
找不到mfc110.dll,无法执行代码
找不到mfc110.dll,无法执行代码
180 0
找不到mfc110.dll,无法执行代码
|
C#
解决办法:为什么我的DLL中加载后找不到指定的函数
解决办法:为什么我的DLL中加载后找不到指定的函数
154 0
IIS加载uslresol.dll模块失败导致应用程序启动异常
IIS加载uslresol.dll模块失败导致应用程序启动异常
“由于找不到MSVCP140.dll,无法继续执行代码,重新安装程序可能会解决此问题等”解决方案
“由于找不到MSVCP140.dll,无法继续执行代码,重新安装程序可能会解决此问题等”解决方案
919 0
|
安全 Windows
IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码
IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码
IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码
|
Windows
模块 DLL usrresol.dll 未能加载
IIS应用程序池自动关闭,模块DLL C:\windows\system32\inetsrv\urlresol.dll 未能加载
512 0
模块 DLL usrresol.dll 未能加载