-- 啟動
EXEC master..xp_cmdshell 'net start SQLSERVERAGENT';
-- 停止
EXEC master..xp_cmdshell 'net stop SQLSERVERAGENT';
-- 設定為自動啟動 (SCM 命令)
EXEC master..xp_cmdshell 'sc config SQLSERVERAGENT start= auto';
前提:xp_cmdshell 需啟用(sp_configure 'xp_cmdshell', 1),執行帳號需具備服務控制權限(通常為 sysadmin)。
可能原因:啟用了「使用 Windows NT 纖程」。
解決:
現象:服務設定為特定帳號執行,密碼過期/變更後啟動失敗。
方案 A:改用本地系統帳戶
方案 B:更新服務帳號密碼
症狀:Agent 無法啟動、作業歷史遺失、錯誤日誌異常。
修復:
msdb(腳本 instmsdb.sql)| 組件 | 功能 | 相關系統表 |
|---|---|---|
| 作業引擎 | 排程觸發、步驟執行、失敗重試、通知 | msdb.dbo.sysjobs, sysjobsteps, sysjobschedules |
| 警示引擎 | 效能計數器/事件/錯誤觸發回應 | sysalerts, sysnotifications |
| 操作員 | 郵件/傳呼/NetSend 接收者 | sysoperators |
| Proxy 帳號 | 作業步驟執行安全性內容 | sysproxies, sysproxylogin |
| 記錄傳送/複寫代理程式 | 獨立子系統 | log_shipping_*, distribution DB |
msdb(含作業、歷史、備份記錄)xp_cmdshell,改用 SSIS/PowerShell Proxy雲端/混合環境建議將排程邏輯外移至雲端協調器,資料庫僅負責執行 T-SQL,享有更好的可觀測性、版控、多環境部署與免維運。