我有一个c#控制台应用程序,它计划将批量数据从oracle导入到sql数据库。我倾向于使用安装文件夹中的oracle客户端dll而不是在服务器上安装它。我在安装文件夹中复制了所需的dll时读了很多现有的SO答案。
https://jeremybranham.wordpress.com/2011/04/25/oracle-instant-client-with-odp-net/
该应用程序在我没有安装oracle客户端的Windows 10机器上正常工作。但是在Windows Server 2008 R2上,它会抛出错误,说找不到OraOps12.dll。虽然我有dll可用。我该怎么做才能解决问题?
我认为手动从Oracle客户端复制DLL是个坏主意。您可以提供Oracle.DataAccess.dll
的副本 - 其余的要求您的客户安装适当的Oracle客户端,即版本和体系结构必须与Oracle.DataAccess.dll
匹配。
或者使用ODP.NET托管驱动程序(Oracle.ManagedDataAccess.dll
),这是一个独立的DLL,不需要任何其他文件。
最后,我可以在不在服务器上实际安装Oracle Client的情况下解决这个问题。我收到错误,无法加载OraOps12.dll,但最终我发现我丢失的DLL是msvcr120.dll。该DLL是Microsoft Visual C ++运行时。所以现在,我在部署文件夹中跟随Oracle dll并且应用程序正在运行。不需要更改配置。