OracleClient + TNSless Verbindung mit .NET
-
18-09-2019 - |
Frage
Wir verwenden System.Data.OracleClient und die abstrakten Basisklassen DbConnection, DbCommand (usw.) zu Oracle zu verbinden.
Die Verbindung funktioniert in unseren Entwicklungsstadien in Ordnung. Während Inszenierung begegnen wir den Fehler ORA-12514: TNS: Zuhörer derzeit nicht weiß, von Dienst in Verbindungsdeskriptor angefordert
.Unser Ziel war es ohne TNS-Eintrag zu verbinden, und alle relevanten Informationen in der Verbindungszeichenfolge (www.connectionstrings.com/oracle#19) Bereitstellen
Ich kann diese SQL bestätigt und werde auf das gewünschte Schema aus dem Staging-Server verbinden (der Hörer hört). Der TNS-Eintrag in SQLPlus verhakt paßt alle Anmeldeinformationen des Query-String aufgebaut werden.
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;
Gibt es eine Installation auf dem Server wir verpasst? Etwas, was wir optimieren können?
Jede Hilfe ist willkommen.
Lösung
Eine SID ist kein Service Name. Ein Service-Name ist in der Regel ein voll qualifizierter Datenbankname, während ein SID eine kurze Kennung ist.
Ein Service-Name sein könnte dbname.company.com während SID dbname ist. Eine Instanz kann tatsächlich mehrere Dienstnamen mit ihm verbunden, aber nur einer SID.
ändern Sie Ihren SERVICE_NAME SID in Ihrer Verbindungszeichenfolge, oder den Dienstnamen für die SERVICE_NAME Option angeben.
Andere Tipps
Wenn ich mich richtig erinnere, hatte ich das gleiche Problem, bis ich mit dem Oracle-Anbieter und OracleDbConnection und OracleDbCommand geschaltet. Die generischen immer nicht den richtigen Anbieter in allen Fällen instanziiert.
Microsoft veraltet die System.Data.OracleClient Lesen Sie diesen Artikel: http://blogs.oracle.com/databaseinsider/2009/ 07 / microsoft_deprecates_systemdataoracleclient_net_developers_for_oracle_should_migrate_to_oracle_data_provider_for_net.html
Wenn Sie in der Oracle-Client in Version 10 +, könnten Sie auch EZConnect (die steht für Easy Connect Namens Methode ). Ihre Verbindungszeichenfolge würde dann wie folgt aussehen:
"Data Source=MyHost:MyPort/MyServiceName;User ID=myUserName;Password=myPassword"
In Kombination mit Oracle Instant Client , macht es die Verwendung von Oracle fast professionellen fühlen! ...