wie kann ich in embedded sql unter c++ (winnt 4.0) den service angeben???
der die verbindung zum db server beinhaltet
danke
wie kann ich in embedded sql unter c++ (winnt 4.0) den service angeben???
der die verbindung zum db server beinhaltet
danke
Hi,
Den Servicenamen herausfinden geht m.W. nicht direkt.
Über die dynamische Performance-View v$instance erfährst Du sowohl die SID als auch den Hostnamen des Servers. Dazu mußt Du die Berechtigung erhalten, und das ist ein bißchen knifflig, da GRANT SELECT dafür nicht erlaubt ist. Erzeuge als SYS eine View:
create view instance as select * from v$instance;
und grante SELECT zu Deinem Benutzer (oder zu PUBLIC):
grant select on instance to public;
Dann erhälst Du aus Deiner C+±Anwendung mit
select host_name, instance_name from sys.instance;
das Paar, das Deinen Service definiert.
Jetzt könntest Du natürlich die Datei TNSNAMES.ORA parsen, die sich in %ORACLE_HOME%\Net80\Admin bzw. %ORACLE_HOME%\Network\Admin (für SQL*Net 2.3) befindet. Der Aufbau ist relativ simpel , so daß dies kein größeres Problem sein sollte.
HTH
Gruß
J.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
stimmt, aber mein problem liegt etwas anderst.
Ich habe ein kleines Esql Programm, und habe über einen neuen Service zu einem DB server übers internet angelget, der connect geht auch. nur ich kann aus meinem kleinen programm nicht auf diesen service zugreifen, er geht immer auf den lokalen db server. gibt es sowas wie einen default server in irgendeiner einstellungsdatei??
gruß tobias
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Ich habe ein kleines Esql Programm, und
habe über einen neuen Service zu einem DB
server übers internet angelget, der
connect geht auch. nur ich kann aus
meinem kleinen programm nicht auf diesen
service zugreifen, er geht immer auf den
lokalen db server. gibt es sowas wie
einen default server in irgendeiner
einstellungsdatei??
gruß tobias
Wie lautet Dein connect-Sring? Du kannst entweder:
connect user/password
oder
connect user/password@service
angeben.
Bei der zweiten Variante mußt Du einfach den Servicenamen austauschen.
Bei der ersten geht Oracle immer auf seinen lokalen Server. Welcher das ist, wird entweder über die Umgebungsvariable local gesteuert:
C:\>set local=kuckuck
oder, besser, über ein Registry-Key
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\Local
den setzt Du eben auf kuckuck.
(kuckuck muß in Deiner TNSNAMES.ORA als service definiert sein)
Gruß
J.
danke, das ist es.
merci nochmal. das hat mir geholfen
danke, tobias