全て、
私は世界中のさまざまなデータベースをプルするスクリプトを持っています。 このスクリプトはスケジュールされ、自動化されています。 つまり、実行することを実行し、すべてのテーブルを保存し、JMPを閉じて、タスクを終了します。
ただし、1つまたは2つのDBが応答しない場合があります。 LDAPサーバーがダウンしていて、パスワードやDBのメンテナンスなどを受け入れません。
この場合、次のようなポップアップウィンドウが表示されます。

これが発生したときにそこにいて[キャンセル]をクリックしても、スクリプトは完了せずに終了します。
try \ catchブロックにカプセル化されたDBからデータをプルする機能があります-手動で[キャンセル]ボタンをクリックしても役に立たないようです... しかし、もっと重要なのは、この場合、監視なしでスクリプトを実行するにはどうすればよいですか? DBの1つに接続できない場合は、それを手放し、残りのDBからデータをプルして、持っているものを処理する方法を教えてください... DBの1つが応答しないという理由だけで、スクリプト全体を切断しないでください... そのポップアップウィンドウを取り除き、失敗したと見なして、catchブロックに移動し、スクリプトを続行するにはどうすればよいですか?
これを担当するスクリプトの部分は次のとおりです。
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] ) );
);ありがとう、
NS。