Tous,
J'ai un script qui extrait diverses bases de données à travers le monde. Ce script est planifié et automatisé. Cela signifie qu'il fait ce qu'il fait, enregistre toutes les tables, ferme JMP et la tâche est alors terminée.
Cependant, de temps en temps, une ou deux bases de données ne répondent pas. Le serveur LDAP est en panne et n'accepte pas mon mot de passe, ou une maintenance de base de données, etc.
Dans ce cas, j'obtiens une fenêtre pop-up comme celle-ci:

Même si je suis là quand cela se produit et que je clique sur "Annuler", le script se termine sans se terminer.
J'ai la fonction qui extrait les données de la base de données encapsulées dans le bloc try\catch - ne semble pas aider lorsque je clique manuellement sur le bouton "Annuler" ... Mais plus important encore, comment exécuter un script sans surveillance dans ce cas ? Comment puis-je le dire - si vous ne pouvez pas vous connecter à l'une des bases de données - laissez-le partir, extrayez les données du reste des bases de données et traitez ce que vous avez ... Ne raccrochez pas tout le script uniquement parce que l'une des bases de données ne répond pas... Comment puis-je me débarrasser de cette fenêtre contextuelle et considérer simplement qu'elle a échoué, passer à attraper le bloc et continuer avec le script?
Voici la partie du script qui en est responsable :
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] ) );
);Merci,
M.