SQL Server Agent 負責排程作業、警示、操作員通知,是自動化運維核心。本文提供透過 T-SQL 控制 Agent 服務、修改啟動模式、排除常見啟動異常的實用技巧。
-- 啟動
USE master; GO
EXEC xp_cmdshell 'net start SQLSERVERAGENT';
-- 停止
USE master; GO
EXEC xp_cmdshell 'net stop SQLSERVERAGENT';
亦可直接在命令提示字元執行 net start/stop SQLSERVERAGENT。
EXEC xp_cmdshell 'sc config SQLSERVERAGENT start= auto';
-- 或使用 scm 工具(舊版相容)
EXEC xp_cmdshell 'scm -Action 7 -Service mssqlserver -SvcStartType 2';
注意: sc config 中 start= 後必須有空格。
現象: 服務顯示已啟動,但檢視作業屬性/歷程報錯 14258。
原因: 啟用「使用 Windows NT 纖程」選項導致。
解決: 企業管理器 → 右鍵 SQL 實例 → 內容 → 處理器 → 取消勾選「使用 Windows NT 纖程」 → 重啟 SQL Server 服務。
現象: Agent 服務啟動失敗,事件日誌記錄登入失敗。
解決方案 A: 服務管理員 → MSSQLSERVER 內容 → 登入 → 選擇「本地系統帳戶」。
解決方案 B: 同路徑選擇「此帳戶」,輸入 Administrator 及新密碼。
-- 檢視 Agent 服務狀態
EXEC master.dbo.xp_servicecontrol 'QUERYSTATE', 'SQLSERVERAGENT';
-- 列出所有作業
EXEC msdb.dbo.sp_help_job;
-- 檢視作業歷程
EXEC msdb.dbo.sp_help_jobhistory;
最佳實務: 生產環境 Agent 應設為自動啟動、定期備份 msdb、啟用作業歷程清理作業避免日誌膨脹、監控 Agent 服務狀態納入基礎設施監控體系。