【茶包射手日記】SQLAgent 無法執行批次檔

燃燒一小時寶貴青春才查出問題 Orz,PO 文留念。

同事報案,某個用 SQL Agent 定期跑的批次檔 (.bat) 執行無效,原因不明。其寫法類似如下範例,看起來沒什麼問題:

實測開 DOS 視窗直接跑 ImportBOMFromSysA.bat 正常,於是我將偵察方向導向 SQL Agent 執行時工作目錄是 Windows\System32 所致,但檢查該批次檔有依 TIPS-指定主控台應用程式的工作目錄 一文所提使用 CD 改路徑技巧,加上其 Log 檔未輸出至 System32,初步排除可能。嘗試手動執行 SQL Agent Job,執行歷程顯示程式執行正常,Exit Code 為 0,代表程式未出錯,而 Log 檔未見相關偵錯訊息軌跡,感覺是程式完全沒執行。

開啟 Process Monitor 觀察,至始至終沒看到讀寫 ImportBOMFromSysA.bat 檔案的記錄,這就不合理了。試將 .bat 檔搬走,SQL Job 居然也沒出錯,一怒之下,將原指令清除改成 D:\Batch\WTF.bat,這才冒出找不到執行檔的錯誤。

回頭再看一次原指令,我似乎懂了什麼。恢復原寫法,將 rem 註解行刪除,ImportBOMFromSysA.bat 便跑了起來。

原來,命令輸入欄雖然可以輸入多行,只有第一行是有效的啊啊啊啊...

理解了這點,下對關鍵字蒐集不少人的踩坑經驗:

面對此一限制的有效解法是用 &&  串接多行指令,但我們的案例第一列是 REM 註解不適用本招,因此我將 REM 移至第二行解決問題。

歡迎推文分享:
Published 28 May 2018 10:07 PM 由 Jeffrey
Filed under:
Views: 3,555



意見

# 小熊子 said on 29 May, 2018 07:35 AM

寫bat會比較好哦

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<May 2018>
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication