Tutto,
Ho uno script che estrae vari database in tutto il mondo. Questo script è pianificato e automatizzato. Ciò significa che fa quello che fa, salva tutte le tabelle, chiude JMP e l'attività è quindi terminata.
Tuttavia, di tanto in tanto uno o due DB non rispondono. Il server LDAP è inattivo e non accetta la mia password, o alcune operazioni di manutenzione del DB, ecc.
In questo caso ottengo una finestra pop-up come questa:

Anche se sono presente quando ciò accade e faccio clic su "Annulla", lo script esce senza essere completato.
Ho la funzione che estrae i dati dal DB incapsulati nel blocco try\catch - non sembra essere d'aiuto quando faccio clic manualmente sul pulsante "Annulla"... Ma, cosa più importante, come posso eseguire lo script senza supervisione in questo caso? Come faccio a dirlo - se non riesci a connetterti a uno dei DB - lascialo andare, estrai i dati dal resto dei DB ed elabora ciò che hai ... Non riagganciare l'intero script solo perché uno dei DB non risponde... Come faccio a sbarazzarmi di quella finestra pop-up e considerarlo un tentativo fallito, spostarmi per catturare il blocco e andare avanti con lo script?
Ecco la parte dello script responsabile di questo:
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] ) );
);Grazie,
M.