全部,
我有一個腳本,用於從世界各地的多個資料庫中提取資料。這個腳本是定時運行的,並且是自動化的。也就是說,它會執行對應的操作,保存所有表,關閉 JMP 進程,然後任務就完成了。
然而,偶爾會出現一兩個資料庫無回應的情況。可能是 LDAP 伺服器當機,不接受我的密碼,或正在進行資料庫維護等等。
在這種情況下,我會收到一個這樣的彈出視窗:

即使我當時在場並點擊“取消”,腳本也會在未完成的情況下退出。
我有一個從資料庫提取資料的函數,它被封裝在 try/catch 區塊中——但當我手動點擊「取消」按鈕時,似乎沒有任何效果……更重要的是——在這種情況下,我該如何讓腳本自動運行?如何告訴腳本,如果無法連接到某個資料庫,就放棄連接,從其他資料庫提取資料並進行處理…不要因為某個資料庫無回應就導致整個腳本崩潰?如何消除那個彈出窗口,並將其視為 try 失敗,然後跳到 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] ) );
);
謝謝,
M.
我想知道在後台運行查詢是否會有幫助?我經常使用類似下面的方法,並檢查返回的數據是否有效:
在背景執行查詢,等待其完成,並在剩餘的 JSL 腳本中引用它們。