Wie setzen Sie die richtigen Pfad zur TNSNAMES Datei in den C# - Anwendung?
hier ist mein problem:
Ich habe ein Programm in C# verwenden ODP.NET dlls: oci.dll, ociw32.dll, Oracle.DataAccess.dll, orannzsbb11.dll, oraocci11.dll, oraociicus11.dll, OraOps11w.dll.
Ich habe 2 Computer. Zuerst mit ganz ODAC-Paket installiert, und die zweite, ohne dass Paket. Aber ich habe alle benötigten dlls in meine exe-Verzeichnis, so ODAC ist kein problem (denke ich).
Der Unterschied zwischen diesen Computern ist der Pfad zur TNSNAMES Datei.
Zuerst: C:\app\OraHome_1\Network\admin\
Zweite: C:\Oracle\product\11.2.0\client_1\network\admin
Und auf dem ersten cpu-Programm funktioniert gut. Aber auf den zweiten mit der gleichen connection string, connot open-Anbindung (ORA-12154). Und mithilfe von SQL-Plus kann ich connect auf beiden Computern.
So, wie kann ich zeigen, dass mein Programm den korrekten Pfad zur TNSNAMES?
also, überall wo ich will mit meinem Programm, client muss installiert sein in der gleichen Stelle? (hat den gleichen Pfad) ?
InformationsquelleAutor Marshall | 2012-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
TNS_ADMIN
Umgebungsvariablen programmatisch. Finden Sie auf dieser Seite für einen Schritt für Schritt durch., wenn Sie ändern wollten, um eine bestimmteTNS_NAMES.ORA
- Datei. Der Oracle-Client muss trotzdem installiert werden, auf dem client-Rechner.Vom ConnectionStrings - ohne Verwendung TNS:
EDIT: Hinzugefügt 3. option
Bitte siehe diese Frage, die könnten, Hilfe Sie bei der Suche nach dem aktuellen Standort der Kunden
TNS_NAMES.ORA
Datei, die Sie öffnen und ändern, wenn Sie wünschen (fügen Sie Ihre eigenen Verbindung, wenn es nicht vorhanden ist)Danke, aber ich brauche TNSNAMES Datei - ich habe viele.. viele Datenbank-und dies ist ein sehr dynamisches Projekt. Menschen, die das hinzufügen und entfernen von Datenbanken aus. Aber trotzdem: ich brauche tnsname-Datei habe ich viele Computer (perheps) diffrent Pfad zum oracle-clients und ohne ODP.NET installiert, und ich habe das Programm in C#, die diese dlls verwenden: dlls: oci.dll, ociw32.dll, Oracle.DataAccess.dll, orannzsbb11.dll, oraocci11.dll, oraociicus11.dll, OraOps11w.dll. Also die Lösung mit variable TNS_ADMIN ok sein, richtig?
Wenn Sie die Installation Ihrer eigenen TNS_NAMES.ORA Datei (senden es zusammen mit dem installieren) Sie könnte tun,. Sie können jedoch vermasseln anderer Leute Einträge - wenn Sie Ihre eigenen benutzerdefinierten Einträgen. Der sicherste Weg wäre, die Verbindung von IP, wenn möglich, die Umgebungsvariable ist eine option, die speziell Ihre Frage beantwortet.
tatsächlich, es funktionierte. Mit 'voll' connection-string (ohne tnsnames) es funktioniert... aber, wie ich bereits erwähnte, ich hätte gerne thsnames-Datei. Für egzample: Wenn ich will, um zu testen, meine Anwendung mit der neuen Datenbank. Bis jetzt habe ich nur für die tnsnames.ora-Datei.. und nun will ich wieder aufbauen-Anwendung (nach dem hinzufügen von anderen connection string).
Bitte siehe mein edit, das würde Ihnen erlauben, um Ihren Eintrag zu einer vorhandenen TNS_NAMES.ORA-Datei - egal, wo der client hat das Oracle Home. Sie konnte die #if (DEBUG == true) compiler-Direktive zu ändern.
InformationsquelleAutor SQLMason
Brauchen Sie nicht zu kümmern, den Pfad der Datei TNSNames: es werden automatisch entdeckt, durch die Bibliothek selbst... sobald Sie es installiert haben. Das ist der entscheidende Punkt: verteilen Sie die dll in Ihrem Projekt ist nicht genug. Sie brauchen, um zu installieren ODP.Net auf der Maschine verwenden müssen: eigentlich ist die installation erstellen Sie einfach ein paar registry-Eintrag, und einer von Ihnen auf die richtigen oracle-Verzeichnis (in der die-Bibliothek finden sich die tnsnames, wenn erforderlich).
Außerdem, wie jemand darauf hingewiesen, Sie brauchen nicht eine tnsnams Datei überhaupt. Sie schreiben, könnte alles, was benötigt wird innerhalb der Verbindungszeichenfolge.
Hier ist eine, die ich verwenden in meinem Umfeld:
Blick auf mein Kommentar zu Dan Andrews Antwort.
Sie müssen immer TNSNAMES.ORA, wenn Sie möchten, verlassen Sie sich auf workstations configuratons... Meine Erfahrung zeigt, dass der beste Weg, dies zu tun ist, um eine Schleife durch die Umgebung.Pfad-Einträge und fügen Sie "\..\Network\ADMIN\TNSNAMES.ORA", um herauszufinden, das Recht ein, die von der InstantClient. Dies ist wohl das wertvollste Weg, um herauszufinden, wir haben mit noch.
InformationsquelleAutor themarcuz
Brauchen Sie nicht zu installieren ODP.NET (oder für diese Angelegenheit der Oracle-Client), wie Sie scheinen zu haben, die erforderlichen Dll-Dateien für eine lokale verteilbar inline-oracle-client. In Ihrem Fall ist es möglich, in dem die TNSNAMES.ORA-Datei befindet sich im gleichen Ordner wie die ausführbare Datei und Ihre speziellen "inline-oracle-client" Holen Sie es von dort. Ansonsten der oracle-client lokal auf Ihrem Anwendung wird versuchen, Holen Sie es von einem beliebigen client auf der Maschine installiert ist.
InformationsquelleAutor FidoFuz