Vor einigen Jahren hatte ich das gleiche Problem.
Damals musste ich Oracle 9 und 10 unterstützen, also kümmert sich der Code nur um diese Versionen, aber vielleicht erspart es Ihnen etwas Recherche.
Die Idee ist:
Unter Windows sind die wahrscheinlichsten Speicherorte entweder %ORACLE_HOME%/network/admin
oder %TNS_ADMIN%
(oder die Registrierungseinstellung TNS_ADMIN). Diese beiden decken fast jede Installation ab.
Natürlich ist es möglich, einen funktionierenden Oracle-Client ohne diese Datei zu haben. Oracle hat verwirrende Netzwerkoptionen, und es gibt viele Möglichkeiten, ein funktionierendes Setup mit TNSNAMES zu erreichen. Je nachdem, was Sie hier erreichen möchten, ist Ihr erster Aufruf die Datei sqlnet.ora
, die auch in %ORACLE_HOME%/network/admin
gefunden wird. Dies sollte eine Zeile enthalten, die ungefähr so aussieht:
TNSNAMES
bedeutet, dass die Datei TNSNAMES.ora
verwendet wird (in diesem Fall die zweite). LDAP
und HOSTNAME
sind alternative Möglichkeiten zum Auflösen der Datenbank. Wenn keine TNSNAMES
vorhanden ist, wird die TNSNAMES.ora
-Datei ignoriert, wenn sie an der richtigen Stelle existiert.
In C # / .NET sollten Sie die Umgebungsvariablen erhalten:
Environment.GetEnvironmentVariable("ORACLE_HOME");
Environment.GetEnvironmentVariable("TNS_ADMIN");
Laut dem Netz hängt das von der Oracle-Version und dem Arbeitsverzeichnis des SQL * Plus-Prozesses ab. Dieser erste Link teilt Ihnen die Umgebungsvariable mit, die die Basis angibt Pfad für einige Versionen (7, 8, 9i) von Oracle. Wenn Sie einen anderen verwenden, bin ich sicher, dass es eine ähnliche Möglichkeit gibt, zum Systemverzeichnis zu gelangen.
Wenn Sie jedoch Versionen dieser Dateien überall verbreiten und sich auf das "Suchen nach einem lokalen tnsnames.ora ersten" Verhalten des Clients verlassen, dann haben Sie vermutlich kein Glück.
Ich bin kein C # - oder Windows-Typ, hoffentlich hilft das. Die Datei tnsnames.ora sollte sich in folgendem Verzeichnis befinden:
%Vor%Wenn ein alternativer Speicherort angegeben wurde, sollte er über den Registrierungsschlüssel TNS_ADMIN verfügbar sein.
Siehe link für weitere Informationen darüber, wie Oracle tns-Namen unter Windows behandelt. p>