Todos,
Tengo un script que extrae varias bases de datos de todo el mundo. Este script está programado y automatizado. Lo que significa que hace lo que hace, guarda todas las tablas, cierra JMP y la tarea finaliza.
Sin embargo, de vez en cuando uno o dos DB no responden. El servidor LDAP está inactivo y no acepta mi contraseña o algún mantenimiento de base de datos, etc.
En este caso, aparece una ventana emergente como esa:

Incluso si estoy allí cuando esto sucede y hago clic en "Cancelar", la secuencia de comandos se cierra sin completarse.
Tengo la función que extrae los datos de la base de datos encapsulados en el bloque try \ catch; no parece ayudar cuando hago clic manualmente en el botón "Cancelar" ... Pero lo que es más importante, ¿cómo ejecuto un script sin supervisión en este caso? ¿Cómo lo digo? Si no puede conectarse a una de las bases de datos, déjelo ir, extraiga datos del resto de las bases de datos y procese lo que tiene ... No cuelgue todo el script solo porque uno de los DB no responde ... ¿Cómo me deshago de esa ventana emergente y considero que falló en el intento, mover al bloque de captura y continuar con el script?
Aquí está la parte del script responsable de esto:
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] ) );
);Gracias,
METRO.