首先,我想使用Oracle.DataAccess.dll来使用OracleBulkCopy。
我想知道我需要能够从数据库读取然后在Oracle中执行批量复制的所有dll。当前,我们仅使用一个dll来执行对数据库的所有读取操作,而我们使用的是Oracle.ManagedDataAccess.Client。但是我不能用它来执行bulkCopy。
我不想为用户安装ODP.NET,我想直接在程序中包含dll。因此,我想知道能够在32位和64位中使用Oracle.DataAccess.dll的最低要求的dll。
我知道有一些与此相关的旧帖子,但是它很安静,列出的dll已过时。我无法找到其中的一些。
我为ODAC12安装了ODP.net,并获取了本文中列出的所有dll。我也尝试过这篇文章。列出的dll指出了版本11。
我做了一个虚拟项目,该项目打开一个连接,读取一个表并将其批量放入另一个表中。我从项目根目录中的帖子中复制了列出的dll,并在项目中包含了Oracle.DataAccess.dll。
当我以64位运行程序时,出现以下错误:
Could not load file or assembly 'Oracle.DataAccess, Version=4.121.2.0,
Culture=neutral, PublicKeyToken=89b483f429c47342'
当我以32位运行它时,出现此错误:
Unable to load DLL 'OraOps12.dll': The specified module could not be
found. (Exception from HRESULT: 0x8007007E)"
我包含的dll是:
oci.dll
ociw32.dll
Oracle.DataAccess.dll
orannzsbb12.dll
oraocci12.dll
oraociei12.dll
OraOps12.dll
您愿意为第三方连接器付费吗? 换句话说,这是为您的雇主准备的吗?如果您需要,他愿意花几百美元来购买某些软件?
第三方连接器的名称是什么?
而不是尝试由充满问题的dll来执行此dll,请查看" XCOPY"安装。 它较小,可以将其嵌入到自己的安装中。 oracle.com/technetwork/topics/dotnet/downloads/index.html
自2009年左右以来,Ive就一直在使用DevArt为Oracle开发的dotConnect。它确实要花钱,但它消除了本地Oracle客户端(如Managed ODP)的依赖性,并且仍支持高级OCI功能(如批量插入和更新)。 当然,它的所有托管DLL都可以GACed或本地化。
我设法使它起作用。
下载针对您的项目的ODAC的良好版本。
对于32位项目,您需要下载ODAC12 ..._ x32.zip(ODAC121021Xcopy_32bit.zip)。
对于64位项目,您需要下载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。
我认为最好从文件夹instantclient_12_1复制所有文件(这等于安装Oracle实例客户端)。 我可能会在您的环境中为您工作,但是在稍微不同的情况下,它可能会失败。
我遇到过类似的问题;安装oracle数据访问组件(odac ODTwithODAC122010.zip)以获取解决方案。
您可以将链接添加到该文件吗?
链接,您可以在页面上选择版本
好像您没有安装Oracle Instant Client(或任何其他版本的Oracle Client)。这是非托管ODP.NET提供程序的先决条件。
安装Oracle Instant Client,就可以了。否则,您只会遇到麻烦。