Alle,
Ich habe ein Skript, das verschiedene Datenbanken auf der ganzen Welt abruft. Dieses Skript ist geplant und automatisiert. Das bedeutet, dass es tut, was es tut, alle Tabellen speichert, JMP schließt und die Aufgabe dann beendet ist.
Von Zeit zu Zeit reagieren jedoch ein oder zwei DBs nicht. Der LDAP-Server ist ausgefallen und akzeptiert mein Passwort nicht, oder DB-Wartung usw.
In diesem Fall bekomme ich ein Popup-Fenster wie folgt:

Selbst wenn ich dabei bin und auf "Abbrechen" klicke, wird das Skript ohne Abschluss beendet.
Ich habe die Funktion, die die Daten aus der DB in try\catch-Block gekapselt zieht - scheint nicht zu helfen, wenn ich manuell auf die Schaltfläche "Abbrechen" klicke ... Aber noch wichtiger - wie führe ich in diesem Fall ein Skript unbeaufsichtigt aus? Wie kann ich es sagen - wenn Sie keine Verbindung zu einer der DBs herstellen können - lassen Sie es los, ziehen Sie Daten aus den restlichen DBs und verarbeiten Sie, was Sie haben ... Hängen Sie nicht das ganze Skript auf, nur weil eine der DBs nicht reagiert... Wie werde ich dieses Popup-Fenster los und betrachte es als fehlgeschlagen, versuchen Sie, den Block zu fangen und mit dem Skript fortzufahren?
Hier ist ein Teil des Skripts, der dafür verantwortlich ist:
DBPaths = [
"Server1" => "ODBC:DSN=...PORT=5432;",
"Server2" => "ODBC:DSN=...PORT=5432;",
"Server3" => "ODBC:DSN=...PORT=5432;",
"Server4" => "ODBC:DSN=...PORT=5432;",
"Server5" => "ODBC:DSN=...PORT=5432;"];
myQuery = Function( {serverDBPath, server},
New SQL Query(
Version( 130 ),
Connection( serverDBPath ),
QueryName( server ),
Select( ... ),
From( ... ),
Where( ... ),
PostQueryScript( ... )
) << Run Foreground()
);
myDTs = {};
For Each( {{server, DBPath}, index}, DBPaths,
Show( server, DBPath, index );
Try( myDTs[index] = myQuery( DBPath, server ), writeToLog( server || " Query error... Using: " || DBPath ||" Error message: "||exception_msg[1] ) );
);Vielen Dank,
M.