none
ConectionString RRS feed

  • Frage

  • Hallo,

    ich muss in meinem in VB2017 geschriebenen Programm Daten nicht nur aus meiner eigenen SQL-Datenbank sondern auch aus einer Oracle-Fremddatenbank abfragen (Version: 11.2.0.4.0). Hier ein Code-ausschnitt:

    Imports System.Data.OracleClient
    
    Dim ConnString As String
    
    ConnString = "Data Source=TESTNAME;User Id=TESTUSER;Password=TESTPASSWORD;Integrated Security=no;")
    
    Using ConnOra As New OracleConnection(ConnString)
    
         ConnOra.Open()
    
         .....
    
    End Using

    Nun bekomme ich eine Warnung, dass "OracleConnection" veraltet ist. Deswegen habe ich die aktuelle Version Oracle.ManagedDataAccess installiert. Der Code sieht jetzt so aus:

    Imports Oracle.ManagedDataAccess.Client
    
    Dim ConnString As String
    
    ConnString = "Data Source=TESTNAME;User Id=TESTUSER;Password=TESTPASSWORD;")
    
    Using ConnOra As New OracleConnection(ConnString)
    
         ConnOra.Open()
    
         .....
    
    End Using

    Beim Versuch die Verbindung zu öffnen bekomme ich folgende Fehlermeldung:

    "ORA-12154: TNS: Angegebener Connect Identifier konnte nicht aufgelöst werden"

    Leider komme ich nicht dahinter, was da mit der ConnString nicht stimmt. Könne mir jemand einen Tipp geben?

    Gruß

    Christop






    Samstag, 10. Oktober 2020 09:16

Alle Antworten

  • Hallo Christoph,

    um Code zu posten, verwende bitte den Button "Codeblock einfügen" in der Smybolleiste des Editors (zweites Icon von rechts).

    Du gibst nur TESTNAME als Data Source an. Was soll das sein? Ein System DSN? Ein Servername? ...?

    Die Meldung an sich (man sucht in der Regel nach der Fehlermeldung wie ORA-12154, meistens kommen dann schon recht gute Hinweise) kann bspw. darauf hindeuten, dass die tnsnames.ora nicht gefunden wird oder kein Eintrag f+r TESTNAME existiert. Siehe dazu bspw.:

      https://support.oneidentity.com/de-de/quick-connect-for-base-systems/kb/213860/ora-12154-tns-could-not-resolve-the-connect-identifier-specified

    oder

      https://kb.tableau.com/articles/issue/troubleshooting-oracle-connection-errors?lang=de-de


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Samstag, 10. Oktober 2020 09:31
    Moderator
  • Hallo Stefan,

    TESTNAME ist ein String, den ich hier natürlich geändert habe und entspricht dem Server-name auf der die Datenbank läuft. Er wurde mir seinerzeit samt UserId und Passwort von unserem Administrator mitgeteilt.

    Gruß

    Christoph

    Samstag, 10. Oktober 2020 10:09
  • Hi Christoph,
    wenn du nicht mit integrierter Windows Authentifizierung arbeitest, sollte auch "Integrated Security=no" angegeben werden, z.B. so:

    Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;Integrated Security=no;

    Außerdem solltest du prüfen, ob der Oracle Server überhaupt erreichbar ist, z.B. erst einmal mit Ping (muss nicht klappen, wenn der Server das nicht unterstützt), dann mit Datenverknüpfungseigenschaften (test.udl -Textdatei mit Doppelklick starten).


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Samstag, 10. Oktober 2020 16:33
  • Hallo Christoph,

    nach meiner Erfahrung sind Datenbankzugriffe von .net nach ORACLE schon ein wenig speziell.
    Die TNS-Names sind für einen Windows-Entwickler aus meiner Sicht einfach nur Überflüssig.

    Schau Dir doch folgenden Hersteller an. Es gibt dort auch für ORACLE eine Freie Version, die Express Version. Achtung: Die kann soweit ich mich erinnere "nur" per Code zugreifen. Das Binden an Controls mit dem Designer ist schon außen vor.  Das wären dann 350$ für die Developer Version. Abhängig von dem Projekt und dem was Du sonst noch damit vor hast mag das für Dich trotzdem noch in Frage kommen.
    Schau Dir die Doku an und die vorhandenen Beispiele und versuche für Dich herauszufinden ob das für Dich passen kann.
    https://www.devart.com/dotconnect/oracle/editions.html

    HTH

    Grüße Alexander

    Samstag, 10. Oktober 2020 21:31
  • Moin Christop,

    da Du nun den Managed-Client verwendest musst Du die TNS-Names in Dein Programmverzeichnis kopieren.

    Mit dem neuen Client läuft es nicht mehr so wie mit den alten Client. Die Art der Suche zur TNS-Names ist anders.

    Sven

    Montag, 12. Oktober 2020 09:09