Comment faire pour déterminer la version de “Oracle.DataAccess.dll” pour y inclure
Tandis que le déploiement de mon .NET 3.5 formulaire Windows à des environnements différents, nous avons couru avec beaucoup d'invalides fournisseur de questions.
Il fonctionne sur certains points et ne fonctionne pas sur les autres.
Quelqu'un pourrait s'il vous plaît aidez-moi, comment puis-je déterminer la version de "Oralce.DataAccess.dll" pour l'utiliser c'est à dire 9 ou 10 ou 11 ou 9.1.* ou 10.1.* ou 11.* ou 12, etc.
-
Cela dépend-il de serveur où je suis d'installer une application? OU
-
Cela dépend-il de retour en fin de base de données oracle?
Qu'entendez-vous exactement par les sujets, et qu'il ne fonctionne pas? Ce genre d'erreurs que vous rencontrez? Est le serveur de l'application de la même machine que le serveur de base de données ou vous installez le client Oracle sur le serveur d'application?
OriginalL'auteur Nil Pun | 2014-01-21
Vous devez vous connecter pour publier un commentaire.
Je seconde la notion d'utilisation de la 100% géré fournisseur de. Il élimine le besoin de connaître les détails, je suis sur le point de discuter. Le seul problème ici c'est que je pense que vous pourriez avoir besoin de mettre à niveau .net 4.0.
TLDR Version:
Version complète:
Première, permet de s'assurer de bien comprendre les composantes de l'ancien unmnaged fournisseur (pas la nouvelle 12c 100% géré fournisseur). Il est constitué de deux pièces:
Il suffit de parler, Oracle.DataAccess.dll est presque juste un wrapper, de la traduction .net instructions dans ORACLE NET des instructions pour le client non géré.
Cela dit, lorsque vous chargez Oracle.DataAccess il y a un ordre dans lequel il essaie de localiser le client non géré dll dont elle a besoin. À partir de la Documentation Oracle:
Cela entre en jeu si vous avez plus d'un client installé sur la machine, alors cela pourrait être la partie de votre question. Si oui, la simple chose à faire est d'utiliser la dllPath variable de configuration dans votre config:
Maintenant, pour répondre directement à votre question - je ne crois pas en charge Oracle de désadaptation Oracle.DataAccess.dll avec ses client (au moins pas à l'envers). Votre meilleur pari est d'installer ODP.net avec votre application installez - le xcopy version est la plus petite et contient le "client instant" Ou, vous devriez penser à la configuration système minimale requise - ie. Le système doit avoir au moins la version X de odp.net installé. Vous pouvez alors compiler à l'encontre de ce minimum de dll et de compter sur l'éditeur de stratégie de redirection lorsqu'un système cible a une version plus RÉCENTE du client.
Bien entendu, cela me pousse à me poser à propos de l'architecture. Envisagez-vous de demander à l'utilisateur pour leur compte Oracle? Si non, vous devez être prudent sur la façon de vous protéger le service partagé compte de votre application. Vous avez peut-être mieux de faire des appels à un service web qui rend l'oracle des appels sur les clients pour vous donner une autre couche de sécurité et de simplification du déploiement du client.
Plus de la version de ODP.net sont compatibles avec le serveur de base de données - vous pouvez certainement utiliser le 11g fournisseur avec une base de données 10g.
Quelques suggestions pour trouver l'actuelle version du client: stackoverflow.com/questions/1171643/...
Ok, voici un comportement intéressant. Mon .NET Gagner Application s'exécute à l'aide de "Oracle.DataAccess.dll" la version 11 sur mon ordinateur portable et UAT Serveur. Toutefois, il ne fonctionne qu'avec "oracle.Data.Access.dll" la version 9 sur le serveur de Production. Ce que je fais mal? Besoin de mise à niveau ODP.NET dans la production ou quelque chose d'autre?
Pourquoi cela vous étonne? Simplement, il semble que vous avez une très vieille version du client sur le serveur. Éditeur politiques vous permettent d'exécuter à l'encontre d'une version plus récente que vous avez référencé, mais je doute qu'il y a une politique à revenir 2 versions majeures. Vous pourriez vous mettre à jour sur le serveur ou utiliser le fournisseur géré.
OriginalL'auteur b_levitt
Première de toutes les demandes de précisions:
Vous avez une Base de données Oracle Serveur (vous l'avez appelé "back-end de la base de données oracle") et un Oracle Client (peu importe si ce est installé sur une application serveur, à partir d'Oracle point de vue, c'est le client)
La version de ODP.NET (Oracle Data Provider for .NET, c'est à dire la Oracle.DataAccess.dll et plus de fichiers) sont définis par le Client Oracle. Vous pouvez utiliser presque tous les ODP.NET version pour vous connecter à chaque base de données Oracle version - plus ou moins.
Le message d'erreur "Le fournisseur n'est pas compatible avec la version du client Oracle" pourrait aussi dire qu'il n'y est pas ODP.NET fournisseur installés à toutes. Dans ce cas, le message d'erreur est en effet un peu trompeuse. Donc, vérifiez d'abord si ODP.NET est installé, il n'est pas inclus dans la norme de l'installation du Client Oracle Instant.
Quand je vérifie tous les fichiers disponibles en téléchargement à partir d'Oracle que vous avez ODP.NET version
9.? et 10.? se réfère à la version de Oracle, 1.x, 2.0 et 4.0 se réfère à la version de Microsoft .NET Framwork (étrange de numérotation, mais c'est la façon dont il est). La Version 9.? et 10.? sont très vieux, je ne pense pas que cela a du sens de les utiliser. 1.x a été pris en charge jusqu'à ce que le client Oracle version 11.1.
La Version 1.x et 2.0 ne sont pas compatibles les uns des autres, c'est à dire perhpaps vous devez fournir deux différents fichiers de configuration de votre application à votre client, et le client doit choisir la bonne en fonction de son oracle local d'installation du client.
Je ne connais pas la situation de 2.0 vs 4.0, je n'ai jamais utilisé 4.0 jusqu'à présent.
Il n'est pas nécessaire de mettre une copie locale de Oralce.DataAccess.dll dans le répertoire de votre application. Il sera pris à partir de GAC (Global Assembly Cache) où il est installé.
Dans votre développement, vous n'avez qu'à prendre soin seulement de ces maire de version, par exemple 2.0.
Ensuite, votre loal GAC sait en raison de la politique de fichiers version exacte est chargé, par exemple, 2.0.10.2.0.2.20 ou 2.0.11.1.0.6.20 ou 2.0.11.1.0.7.20 ou 2.0.11.2.0.1.2 ou quoi que ce soit.
Sur le dessus de ce tout ce que vous devez savoir si votre client Oracle est 32 bits ou 64 bits et comprennent ODP.NET en conséquence.
Ici, vous pouvez obtenir plus d'informations: Oracle Data Provider for .NET FAQ
Tu veux dire que la base de données est la version 9i? Quel est le message d'erreur?
Je veux dire "oracle.database.dll" la version 9. Message d'erreur est incompatible fournisseur de données oracle
Vous dire que votre Client Oracle est la version 9? Est-il aussi courir encore sur Windows XP ou Windows 2000? La version de Oracle.DataAccess.dll doit correspondre toujours la version du Client Oracle installé. Quelle est la exact version de vous-Oracle de l'installation du client et qu'est-ce que le exact la version de Oracle.DataAccess.dll?
Dll est certainement 9. Comment trouver la version du client oracle installé?
OriginalL'auteur Wernfried Domscheit
si vous avez du client ou de l'instance oracle installé dans votre système. vérifiez le nom du dossier
ORACLE_HOME\produit\11.2.0\dbhome_1\ODP.NET\bin\2.x
ici vous trouverez le fichier - Oracle.DataAccess.dll
juste à inclure dans votre référence.
OriginalL'auteur Mohammad shahnawaz
En fait, je crois qu'il n'est pas de bonne réponse.
Tout dépend de l'architecture du processeur (donc bits) l'application s'exécute, la version de BEC client que vous utilisez, et cætera.
J'ai trouvé le plus utile pour envelopper l'Oracle de l'interaction dans une classe, à l'aide de la Réflexion pour trouver la version disponible à l'utilisation.
Concernant le numéro de la version: la version de la ODP.net les assemblages doivent correspondre à celles du BEC de l'installation du client. C'est une mauvaise idée de mélanger le 12.* BEC client avec le de 10.* ODP.net assemblées.
Peut-être cet article est également utile pour vous.
L'application en premier lieu. Mais si votre programme dit de 32 bits, vous devez installer la version 32 bits de BEC client. Si votre programme dit de 64 bits, vous devez installer la version 64 bits du BEC client. Si votre programme dit MSIL vous ne savez jamais ce que vous avez besoin au moment de la compilation, puisque le réel de l'exécution de serveur est peut-être l'un de ceux-ci.
OriginalL'auteur Patrick Hofman
Si votre serveur Oracle est la version 10.2 ou plus, vous pourriez envisager de simplement à l'aide de la gestion de ODP.NET version qui étaient disponibles avec Oracle 12.
Apparemment, c'est une dépendance, de moins de 10 MO. Il convient de faire de déploiement de votre application à différents systèmes beaucoup plus facile par rapport à la ODP.NET les versions qui dépend d'Oracle (instantanée) du Client. Il faut aussi éviter d'avoir à vous soucier d'installer le Client Oracle.
Cependant, ils mentionnent qu'il travaille sur "la dernière version de l' .NET Framework 4.5.1", donc à partir de ce que je comprends, vous avez besoin de mettre à jour votre application pour 4.5.1, mais peut-être que c'est seulement si vous voulez utiliser certaines fonctionnalités (comme le Cadre de l'Entité de soutien).
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
OriginalL'auteur Aaron
Parfois, vous obtenez le
Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies.
alors que vous avez le droit dll et le problème est ailleurs.Il m'arrive (et ce sujet m'a beaucoup aidé pour le déterminer) et c'était la configuration de mon pool d'applications IIS qui ne permettent pas les applications 32 bits (paramètres avancés).
OriginalL'auteur SabineA