Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Oracle.DataAccess.Client依赖项_C#_.net_Oracle_Dll_Odp.net - Fatal编程技术网

C# Oracle.DataAccess.Client依赖项

C# Oracle.DataAccess.Client依赖项,c#,.net,oracle,dll,odp.net,C#,.net,Oracle,Dll,Odp.net,首先,我想使用Oracle.DataAccess.dll来使用OracleBulkCopy 我想知道我需要能够从数据库中读取的所有DLL,然后在Oracle中执行批量复制。目前,我们只使用一个dll来执行对数据库的所有读取,我们使用的是Oracle.ManagedDataAccess.Client。但我不能用它来进行批量复制 我不想为用户安装ODP.NET,我想在程序中直接包含dll。因此,我想知道使用32位和64位的Oracle.DataAccess.dll所需的最小dll数 我知道有一些关于

首先,我想使用
Oracle.DataAccess.dll
来使用
OracleBulkCopy

我想知道我需要能够从数据库中读取的所有DLL,然后在Oracle中执行批量复制。目前,我们只使用一个dll来执行对数据库的所有读取,我们使用的是
Oracle.ManagedDataAccess.Client
。但我不能用它来进行批量复制

我不想为用户安装ODP.NET,我想在程序中直接包含dll。因此,我想知道使用32位和64位的
Oracle.DataAccess.dll
所需的最小dll数

我知道有一些关于这个的旧帖子,但是它很旧,而且列出的DLL已经过时了。我找不到其中的一些

我为ODAC12安装了ODP.net,并检索了本文中列出的所有DLL。我也试过这个。列出的DLL指出了版本11

我创建了一个虚拟项目,它打开一个连接,读取一个表,然后将其打包到另一个表中。我从项目根目录中的帖子中复制了列出的dll,并在项目中包含了
Oracle.DataAccess.dll

以64位运行程序时,出现以下错误:

无法加载文件或程序集“Oracle.DataAccess,版本=4.121.2.0, 区域性=中性,PublicKeyToken=89b483f429c47342'

当我以32位运行它时,会出现以下错误:

无法加载DLL“OraOps12.DLL”:无法加载指定的模块 建立(HRESULT的例外:0x8007007E)

我提供的DLL包括:

  • oci.dll
  • ociw32.dll
  • Oracle.DataAccess.dll
  • orannzsbb12.dll
  • Oracioc12.dll
  • oraociei12.dll
  • OraOps12.dll

看起来您没有安装Oracle Instant client(或任何其他版本的Oracle client)。这是非托管ODP.NET提供程序的先决条件


安装Oracle Instant client,您就可以了。否则,您只会遇到麻烦。

我设法让它工作起来

  • 下载面向您的项目的ODAC的好版本

  • 对于项目,您需要下载ODAC12…_x32.zip(ODAC12121xcopy_32bit.zip)

  • 对于该项目,您需要下载ODAC12…_x64.zip

  • 根据您想要的版本(32位对64位),将其解压缩到空文件夹中

  • 通过在windows搜索栏中搜索*.dll,在
    instantclient_12_1
    文件夹中找到所有dll。您需要抓取:

  • oci.dll

  • ociw32.dll

  • orannzsbb12.dll

  • oraociei12.dll

  • oraons.dll

    • 根据您的.NET版本,在
      odp.net4
      odp.net20
      文件夹中找到这两个DLL:
  • OraOps12.dll

  • Oracle.DataAccess.dll

    • 复制那些32位DLL或64位DLL,并将它们直接放在项目的输出路径中。例如,在
      C:\…\vsProjects\BulkInsert\BulkInsert\bin\Debug

    • 通过指向输出路径浏览项目中的Oracle.DataAccess.dll


    我遇到了类似的问题;安装oracle数据访问组件(odacODTwithODAC122010.zip)解决方案。

    你愿意为第三方连接器付钱吗?换句话说,如果你需要的话,你的雇主愿意花几百美元买一些软件,这对他们有用吗?第三方连接器的名称是什么?与其一个接一个地做这个充满问题的dll,不如看看e“XCOPY”安装。它更小,您可以将其嵌入您自己的安装中。我从2009年左右开始使用DevArt的dotConnect for Oracle。它确实需要钱,但它消除了对本地Oracle客户端(如托管ODP)的依赖性而且仍然支持诸如批量插入和更新之类的高级OCI功能。当然,所有托管DLL都可以被访问或本地化。我认为最好是从文件夹
    instantclient\u 12\u 1
    中复制所有文件(这相当于安装Oracle实例客户端)。我可以在您的环境中工作,但在稍有不同的情况下,它可能会失败。请注意,不要从错误版本的Oracle bitness复制DLL。我复制了DLL,并出现此错误,直到我从同一版本的Oracle Instant Client获得所有DLL:您可以添加指向该文件的链接吗?您可以在第页上选择版本