sql >> Database >  >> RDS >> Oracle

Hoe ODP.NET 2.111 en ODP.NET 4.112 op dezelfde machine naast elkaar te installeren, terwijl beide naar dezelfde databaseserver verwijzen

Het korte antwoord:

Opmerking:ik heb geprobeerd de nieuwe ODP.NET over de vorige client te installeren en kon verbinding maken met de database met behulp van de volgende verbindingsreeks...

Dit geeft aan dat je nieuwe installatie geen tnsnames.ora en sqlnet.ora heeft in /Network/Admin. Als u akkoord gaat met de oude client die de nieuwe ODP.net-installatie gebruikt, kunt u deze kopiëren van de oude installatie of u kunt een globale locatie voor alle instanties specificeren met de TNS_ADMIN-omgevingsvariabele, dwz TNS_ADMIN=C:\MyOracleFilesDir

Het lange antwoord:

Toen u de nieuwe client installeerde, installeerde deze hoogstwaarschijnlijk ook beleidsbestanden voor uitgevers in de GAC die verwijzingen naar de oude Oracle.DataAccess.dll omleiden naar de nieuwe versie tijdens het assemblageproces. Oracle.DataAccess lokaliseert vervolgens de client via een parameter (DllPath) in het register. U kunt deze locatie overschrijven door het dllPath in uw .config-bestand in te stellen:

<configuration>
  <oracle.dataaccess.client>
    <add key="DllPath"            value="C:\yourotherpath"/>
  </oracle.dataaccess.client>
</configuration>

Dit is over het algemeen wat ik doe, maar naarmate ik dit meer begrijp, realiseer ik me dat ik een nieuwere dll forceer tegen een oudere client. Als het je doel is om de oude client onaangeroerd te laten, is het misschien een betere optie om het uitgeversbeleid uit de GAC te verwijderen (ik denk niet dat ze zelfs worden geïnstalleerd met de volledige ODAC-installatie, alleen ODP.net):

Als u ze opnieuw moet installeren, vindt u ze meestal op oraclepath\odp.net\PublisherPolicy.

Een andere, en misschien betere optie voor de lange termijn, is om de oude clients te configureren om het uitgeversbeleid te negeren:http://msdn.microsoft.com/en-us/library/cf9025zt%28v=vs.80%29.aspx

Ten slotte ben ik er vrij zeker van dat de .net-componenten voor de 2.0 vs. 4.0-frameworks afzonderlijke installatieopties zijn tijdens de ODP.net-installatie. Ik denk dat je dit probleem misschien kunt vermijden door simpelweg de 2.0-componenten niet te installeren. In dat opzicht zou je een soortgelijk werk kunnen doen door in plaats daarvan je nieuwe project te ontwikkelen tegen het 64-bits odp.net. Net als v2.0 en v4.0 hebben 32 bit en 64 bit ook geen besef van elkaar.




  1. RONDE() Voorbeelden in SQL Server

  2. Hoe SQLite Ifnull() werkt

  3. Converteer tekstwaarde in SQL Server van UTF8 naar ISO 8859-1

  4. NULL-complexiteit - Deel 4, Standaard unieke beperking ontbreekt