Tout d'abord, je veux utiliser le Oracle.DataAccess.dll
pour utiliser OracleBulkCopy
.
Je veux connaître toutes les dlls dont j'ai besoin pour pouvoir lire à partir d'une base de données, puis effectuer une copie en bloc dans Oracle. Actuellement, nous utilisons une seule dll pour effectuer toutes les lectures à partir de bases de données, nous utilisons Oracle.ManagedDataAccess.Client
. Mais je ne peux pas l'utiliser pour effectuer un bulkCopy.
Je ne veux pas installer ODP.NET pour les utilisateurs, je veux inclure la dll directement dans le programme. Je veux donc connaître le minimum de dll requis pour pouvoir utiliser le Oracle.DataAccess.dll
en 32 bits et en 64 bits.
Je sais qu'il y a quelques vieux articles à ce sujet, mais c'est vieux et les dll listées sont obsolètes. Je ne peux pas en trouver quelques-uns.
J'ai installé ODP.net pour ODAC12 et j'ai retrouvé toutes les dll listées dans ce post . J'ai aussi essayé avec ce post . Les dll listées soulignent la version 11.
J'ai créé un projet factice qui ouvre une connexion, lit une table et la place dans une autre table. J'ai copié les dlls répertoriées à partir des publications à la racine du projet et j'ai inclus Oracle.DataAccess.dll
dans le projet.
Lorsque j'exécute mon programme en 64 bits, l'erreur suivante apparaît:
Impossible de charger le fichier ou l'assembly 'Oracle.DataAccess, Version = 4.121.2.0, Culture = neutre, PublicKeyToken = 89b483f429c47342 '
Quand je le lance en 32 bits, j'obtiens cette erreur:
Impossible de charger DLL 'OraOps12.dll': le module spécifié ne peut pas être a trouvé. (Exception de HRESULT: 0x8007007E) "
Les dll que j'ai inclus sont:
J'ai réussi à le faire fonctionner.
Téléchargez la bonne version de l’ODAC qui ciblera votre projet.
Décompressez-le dans un dossier vide en fonction de la version souhaitée (32 bits ou 64 bits).
Recherchez dans le dossier instantclient_12_1
toutes les dll en recherchant * .dll dans la barre de recherche de Windows. Vous devez saisir:
oci.dll
ociw32.dll
orannzsbb12.dll
oraociei12.dll
oraons.dll
odp.net4
ou odp.net20
en fonction de votre version .NET ces deux dll:
OraOps12.dll
Oracle.DataAccess.dll
Copiez les DLL 32 bits ou 64 bits et insérez-les directement dans le chemin de sortie de votre projet. Par exemple, dans C:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug
.
Parcourez Oracle.DataAccess.dll dans votre projet en pointant sur le chemin de sortie.
J'ai eu le même problème Installez les composants d’accès aux données Oracle (odac ODTwithODAC122010.Zip ) pour la solution.
On dirait que vous n'avez pas installé le client Oracle Instant (ou toute autre version du client Oracle). Il s'agit d'une condition préalable pour le fournisseur ODP.NET non géré.
Installez le client Oracle Instant et tout va bien. Sinon, vous n'obtiendrez que des ennuis.