모두,
전 세계의 다양한 데이터베이스를 가져오는 스크립트가 있습니다. 이 스크립트는 예약 및 자동화되어 있습니다. 즉, 수행하는 작업을 수행하고 모든 테이블을 저장하고 JMP를 닫고 작업이 완료됩니다.
그러나 때때로 하나 또는 두 개의 DB가 응답하지 않습니다. LDAP 서버가 다운되어 내 비밀번호 또는 일부 DB 유지 관리 등을 허용하지 않습니다.
이 경우 다음과 같은 팝업 창이 나타납니다.

이 경우 내가 거기에 있고 "취소"를 클릭해도 스크립트가 완료되지 않고 종료됩니다.
try\catch 블록에 캡슐화된 DB에서 데이터를 가져오는 기능이 있습니다. "취소" 버튼을 수동으로 클릭하면 도움이 되지 않는 것 같습니다... 그러나 더 중요한 것은 이 경우 감독되지 않은 스크립트를 어떻게 실행합니까? 어떻게 말합니까 - DB 중 하나에 연결할 수 없으면 놔두고 나머지 DB에서 데이터를 가져 와서 가지고있는 것을 처리하십시오 ... DB 중 하나가 응답하지 않는다고 해서 전체 스크립트를 끊지 마십시오... 어떻게 그 팝업 창을 없애고 시도가 실패한 것으로 간주하고 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] ) );
);감사 해요,
미디엄.