View Full Version : SQL Statement zum Prüfen, ob AS400 verfügbar
GutmannHGW
07-02-08, 10:26
Hallo Forum!
Es gibt bei uns eine Anwendung die Daten von der AS400 über SQL abholt u. auswertet.
Wenn die As400 heruntergefahren wird soll das Programm das mitbekommen u. daraufhin keine Daten mehr anfordern.
Bei Oracle-DB habe ich gehört das es eine Dummytabelle gibt auf die man einen Select * FROM... absetzt u. wenn wenn kein Ergebnis kommt gibt es keine "Gegenstelle".
Kennt ihr bei der AS400 eine Möglichkeit irgendeinen Systemwert über SQL abzufragen??
Eigentlich scheitert doch bereits der Connect.
Ansonsten bekommst du doch beim Select deiner Tabelle einen entsprechenden negativen SQLCOD, ansonsten ist der ja entweder 0 (OK) oder 100 (EOF).
GutmannHGW
07-02-08, 10:54
Also an sich verstehe die Frage von dem Kollegen auch nicht ganz...
Wenn ich das programmieren würde u. ich kein "Verbindungs-OK" habe dann gehe ich davon aus das die Gegenstelle ein Problem hat ;)
Problem ist nur, wenn die Verbindung zustande kommt... das Programm in einer Warteschleife ist u. davon ausgeht es eine aktive Verbindung zu haben u. dann per SQL auf die AS400 zugreift crasht das Programm...
Aber an sich eine komische Angelegenheit, ich glaube sowas gibt es nicht auf der System i was der Kollege fordert ;)
Ich glaube wir schließen den Thread - danke dir trotzdem!
Normalerweise würde ich auch die Verbindung nicht ständig offen halten sonder in einer Schleife
Connect Ziel
Select ...
Connect Lokal
verwenden.
Ggf. kann das PGM auch aus einem CLP zeitgesteuert aufgerufen werden, so dass sich das Porgramm mit dem Schließen aller Verbindungen immer beendet.
bei Java Connection Pools ist das völlig normal, dass sich der Pool darum kümmert, ob die Connection noch funzt. Dafür tut es jedes beliebige SQL Statement und man nimmt dann meist das (vermutlich) billigste. Gängig sind da:
select * from sysibm.sysdummi1
commit (mit Vorsicht zu genießen)
...
mfg
Dieter Bender
Also an sich verstehe die Frage von dem Kollegen auch nicht ganz...
Wenn ich das programmieren würde u. ich kein "Verbindungs-OK" habe dann gehe ich davon aus das die Gegenstelle ein Problem hat ;)
Problem ist nur, wenn die Verbindung zustande kommt... das Programm in einer Warteschleife ist u. davon ausgeht es eine aktive Verbindung zu haben u. dann per SQL auf die AS400 zugreift crasht das Programm...
Aber an sich eine komische Angelegenheit, ich glaube sowas gibt es nicht auf der System i was der Kollege fordert ;)
Ich glaube wir schließen den Thread - danke dir trotzdem!
GutmannHGW
07-02-08, 12:21
@Bender
Ich weiß leider nicht in welche Sprache die Leute das programmieren, in C# wie gesagt würde ich da nicht das Problem haben meiner Meinung nach...
--
Normal würde ich auch
1. Verbindung aufbauen
2. Wenn Verbindung ok, SQL...
3. Verbindung abbauen
Dachte nur vielleicht ist den richtigen AS400 Leuten so etwas bekannt, ich habe (noch) relativ wenig auf der SystemI zu tun.
Danker derweil vielmals!
Das könnte man auch für C++ etwas anders sehen. Das ist eine Frage von Anwendungsdesign.
Wenn man denn mit Commit Steuerung arbeitet (auf was allenfalls ein paar RPG Programmierer und andere leichtsinnige Vögel verzichten) und mehrfach connecten darf (was man mit embedded SQL in RPG nicht darf), dann macht es Sinn sich für jede Transaktion eine extra Connection zu holen (das macht vieles einfacher).
Nun arbeitet man mit relativ vielen Connections, die man dann am besten von einem Connection Pool verwalten lässt (was auch Caching von prepared Statements verbessert). Den lässt man dann auch prüfen, ob die Connection überhaupt noch lebt (dieses Problem hat man bei eventdriven Programmierung eh), in Java ist das Standard und solche Pools kriegt man als OpenSource.
Und wenn man mal mit C++ und Connecton Pool googelt - vielleicht solltest du das mal tun
D*B
@Bender
Ich weiß leider nicht in welche Sprache die Leute das programmieren, in C# wie gesagt würde ich da nicht das Problem haben meiner Meinung nach...
--
Normal würde ich auch
1. Verbindung aufbauen
2. Wenn Verbindung ok, SQL...
3. Verbindung abbauen
Dachte nur vielleicht ist den richtigen AS400 Leuten so etwas bekannt, ich habe (noch) relativ wenig auf der SystemI zu tun.
Danker derweil vielmals!