Zugriff auf ODBC per AdoDB.Connection Objekt

DrMueller

Erfahrenes Mitglied
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:
  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
 
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:
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
 
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?
 
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
 
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?
 
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.
 
Nicht mehr aktuell, passt danke.
Zusätzlich zu allem hat der Techniker noch den ODBC falsch konfiguriert...

Naja wieder was gelernt.


Vielen Dank oneof6
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück