嘗試在 SQL Server 中以 xp_cmdshell 執行 calc.exe,查詢視窗長時間顯示「正在執行查詢」不會返回。這不是 Bug,而是機制使然。
xp_cmdshell(或透過 sp_configure)。-- 建立資料夾:成功返回
EXEC xp_cmdshell 'mkdir d:\csj';
-- 執行計算機:卡住不返回
EXEC xp_cmdshell 'c:\calc.exe';
xp_cmdshell 以同步方式運作,必須等待子程序結束才返回控制權。calc.exe、Notepad 等需要使用者介面的程式,在無桌面的服務帳戶下永遠不會結束,導致永久卡住。xp_cmdshell 執行權限(GRANT EXEC ON xp_cmdshell TO [login]),預設僅 sysadmin 可用。xp_cmdshell,減少攻擊面。結論:xp_cmdshell 不是萬能啟動器,只適合純命令列自動化任務;GUI 程式請勿嘗試。