tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
345
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Hallo Leute,

    ich muss schon wieder was fragen:
    Ich soll per das adoDB.Connection Objekt eine Verbindung auf ein ODBC machen, welches auf auf eine Oracle-DB zeigt. Der Treiber der ODBC ist Oracle in XE Client.

    Ich habe gegoogelt und diverse Connectionstring rausgesucht, wobei der Code ziemlich simpel so aussieht:

    Code :
    1
    
      Call adoConn.Open("Provider=msdaora;Data Source=consolidate_vw;User Id=xx;Password=xx;")

    Passwort und User-Login sind das selbe, wobei die passen sollten, da ich die selben auch beim ODBC-Test verwende. Nun erhalte ich permanent folgenden Fehler:

    ---------------------------
    PacificDoc2Cons
    ---------------------------
    Run-time error '-2147467259 (80004005)':

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

    ---------------------------
    OK
    ---------------------------


    Frage: Was genau erwartet er beim Provider? Muss ich den ODBC-Treiber angeben, also "Oracle in XE Client"? Da meldet er jedoch, dass der Provider nicht gefunden wird.

    Bei Google findet man bei der Meldung häüfig, dass diese TSNAMES.ORA falsch ist resp. da etwas geändert werden muss. Ich habe vom Server-Techniker jedoch erfahren, dass diese gar nicht vorhanden ist auf dem Server.


    Kennt wer das Problem oder was ähnliches?




    Wie immer vielen Dank im Voraus.

    Müller Matthias
     

  2. #2
    Avatar von oneof6
    oneof6 oneof6 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    entre dos tierras
    Beiträge
    73
    Hallo Doc,

    ich weiß nicht in wie weit Du Dich mit Oracle auskennst?
    Die Tnsnames.ora enthält die connection strings, welche vom Oracle Treiber verwendet werden um sich zum Listener einer Oracle Instanz zu verbinden. Die Einträge in der Datei
    sehen wie folgt aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    DBName =
      (description =
           (address_list =
             (address =
               (protocol = tcp)
               (host = hostnameOrIP)
               (port = 1521)
             )
          )
          (connect_data =
            (sid = OracleSID)
          )
      )

    Im Beispiel heißt die Oracle Instanz "OracleSID", der TNS Name allerdings "DBName". Wenn Du Dich jetzt mit dem TNS name verbinden möchtest, musst Du DBName als Datenbank angeben. Wenn Du den Oracle Treiber installiert hast, wird normalerweise im /bin Verzeichnis das Programm tnsping mitgeliefert. Mit diesem kannst Du den connection String in einer Tnsnames.ora überprüfen. Es gibt allerdings auch Treiber (JDBC) die diese Tnsnames.ora nicht benötigen. ODBC benötigt aber meines Wissens die Tnsnames und den Oracle Treiber.

    Gruß,
    OneOf6
     
    ...every second is a new spark, sets the universe aflame
    (Bruce Dickinson)

    Got something to say? http://www.plaintalk.de

  3. #3
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Hallo,

    ich bin leider, wie wahrscheinlich manche User auf dem Board schon gemerkt haben, Mädchen für alles. Ich habe daher das erste mal tatsächlich Kontakt mit ODBC.

    Bevor ich jedoch den Techniker anstupse bzgl. dieser Datei: Wenn der Test über ODBC erfolgreich ist, obwohl diese Datei nicht vorhanden ist, sollte es nicht auch über das adodb Objekt gehen ohne diese Datei? Oder haben die ein anderes Verhalten?
     

  4. #4
    Avatar von oneof6
    oneof6 oneof6 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    entre dos tierras
    Beiträge
    73
    Also,

    ODBC und ADO sind verschiedene Dinge. Man kann zwar mit ADO auf ODBC zugreifen (gibt nen ODBC provider) aber Du greifst in dem Beispiel auf den Oracle Provider zu. Meine letztes ADO Programm bzgl. Oracle ist 5 Jahre her, aber dafür musste ich den Oracle Client inkl. Tnsnames.ora Eintrag auf dem Client installieren. Der Provider bei mir hieß MSDAORA.1.

    Vielleicht solltest Du versuchen den ADO ODBC Provider zu verwenden, wenn dieser schon mit dem Oracle Server funktioniert.


    Gruß,
    OneOf6
     
    ...every second is a new spark, sets the universe aflame
    (Bruce Dickinson)

    Got something to say? http://www.plaintalk.de

  5. #5
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Nochmal für die ganz Dummen:
    Ich hab versucht direkt auf die DB zuzugreifen, anstatt auf den ODBC.
    Wobei consolidate_vw ist mein ODBC-Name.

    Muss ich als Driver denn den Namen des Treibers verwenden, welcher ODBC benutzt? Bei Provider das selbe?
     

  6. #6
    Avatar von oneof6
    oneof6 oneof6 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    entre dos tierras
    Beiträge
    73
    Genau das funktioniert nicht.

    Also, Du hast als ADO Provider den MSDAORA angegeben...bedeutet Du benutzt den Oracle OLE DB Treiber (was das ist lassen wir jetzt mal dahin gestellt). Dieser Treiber weiß von Deiner ODBC Verbindung überhaupt nichts, er benötigt als Datenbankname den TNS name in der Tnsnames.ora...nicht den ODBC Namen Deiner funktionierenden Verbindung.

    Du könntest den ODBC Treiber benutzen, dann musst Du aber den Provider=MSDAORA durch den entsprechenden ODBC Provider austauschen.
     
    ...every second is a new spark, sets the universe aflame
    (Bruce Dickinson)

    Got something to say? http://www.plaintalk.de

  7. #7
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Nicht mehr aktuell, passt danke.
    Zusätzlich zu allem hat der Techniker noch den ODBC falsch konfiguriert...

    Naja wieder was gelernt.


    Vielen Dank oneof6
    Geändert von DrMueller (20.10.11 um 11:33 Uhr)
     

Ähnliche Themen

  1. MySQL-Zugriff: Connection.createStatement() hängt
    Von Kryptaesthesie im Forum Java
    Antworten: 10
    Letzter Beitrag: 15.05.09, 10:44
  2. Zugriff auf die installierten ODBC-Treiber?
    Von Sapperlot im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 25.08.05, 11:32
  3. ODBC Connection Dialog unterdrücken
    Von Topsen im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 22.06.05, 11:03
  4. connection im Objekt
    Von StormYus im Forum PHP
    Antworten: 0
    Letzter Beitrag: 11.10.04, 12:42
  5. [Access + MySQL+ ODBC] Lost connection
    Von derGugi im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 29.09.03, 14:02