SQL Server Agent 是排程作業、警示、複寫的核心服務。本文整理透過 T-SQL 控制服務啟停、設定自動啟動、排查「錯誤 14258」與密碼變更導致啟動失敗的實用技巧,幫助 DBA 快速恢復 Agent 可用性。
需啟用 xp_cmdshell(sp_configure 'show advanced options',1; RECONFIGURE; sp_configure 'xp_cmdshell',1; RECONFIGURE;)。
-- 啟動
USE MASTER; GO
EXEC XP_CMDSHELL 'NET START SQLSERVERAGENT';
-- 停止
USE MASTER; GO
EXEC XP_CMDSHELL 'NET STOP SQLSERVERAGENT';
EXEC XP_CMDSHELL 'SC CONFIG SQLSERVERAGENT START= AUTO';
-- 或使用 scm 工具(舊版相容)
EXEC XP_CMDSHELL 'SCM -Action 7 -Service SQLSERVERAGENT -SvcStartType 2';
亦可在「服務」管理工具 (services.msc) 圖形介面設定。
可能原因:啟用了「使用 Windows 纖程」(Lightweight Pooling)。
解決:
方案 A:改用本地系統帳戶
方案 B:更新指定帳號密碼
Administrator 或專用服務帳號與新密碼。⚠️ 建議使用專用低權限網域服務帳號(非 Administrator),遵循最小權限原則。
| 檢查項目 | 命令/位置 | 預期結果 |
|---|---|---|
| 服務狀態 | services.msc / SC QUERY SQLSERVERAGENT | RUNNING |
| 啟動類型 | services.msc / SC QC SQLSERVERAGENT | AUTO_START |
| 服務帳號 | services.msc → 登入頁籤 | 專用網域帳號,密碼正確 |
| 錯誤記錄 | SSMS → 管理 → SQL Server Agent → 錯誤記錄 | 無反覆錯誤 |
| 作業歷程 | SSMS → Agent → 作業 → 檢視歷程 | 排程作業正常執行 |
# 需啟用 WinRM 並具備權限
Invoke-Command -ComputerName SQL01 -ScriptBlock {
Restart-Service SQLSERVERAGENT -Force
Set-Service SQLSERVERAGENT -StartupType Automatic
}
適合納入自動化部署/維運腳本。