在 SQL Server 環境中,若需定時執行預存程序或特定 T-SQL 指令(長度不超過 3200 字元),最標準的做法是透過 SQL Server Agent 的「作業」功能來實現。本文將詳細說明從建立作業、設定步驟、排程、通知,到歷史記錄管理、伺服器重命名後的錯誤排除,以及作業遷移的完整流程。
在 SSMS 中右鍵點選「作業」→「新增作業」,開啟「新增作業」視窗。
切換至「步驟」頁籤,點選「新增」:
.sql 檔案。EXEC dbo.ProcedureName @Param1, @Param2, ...若有多個步驟,可重複新增,並利用「移動」、「編輯」、「刪除」按鈕調整順序與邏輯。
切換至「排程」頁籤,點選「新增排程」:
若暫時不想讓作業自動執行,只需取消勾選「啟用」即可保存作業但不排程。
切換至「通知」頁籤,預設勾選「作業失敗時寫入 Windows 應用程式事件記錄」即可,亦可依需求設定電子郵件、網傳或分頁伺服器通知。
若發現部分作業歷史記錄過多、部分過少,可調整記錄保留上限:
兩者有相互制約關係,請依實際需求調整。
現象:伺服器重新命名後,嘗試新增、更新、刪除作業時出現錯誤 14274:「無法從 MSX 伺服器新增、更新或刪除作業」。
原因:msdb.dbo.sysjobs 表的 originating_server 欄位仍存舊伺服器名稱。
解決方案(無需重啟服務,適合 24x7 環境):
USE msdb;
GO
SELECT job_id, name, originating_server FROM sysjobs WHERE originating_server <> @@SERVERNAME;
GO
-- 找到對應的 job_id 後執行更新
UPDATE sysjobs SET originating_server = @@SERVERNAME WHERE job_id = 'B23BBEBE-A3C1-4874-A4AB-0E2B7CD01E14';
GO
更新完成後即可正常管理該作業。
.sql 檔案。注意事項:
GO 批次分隔符,在某些執行環境下可能報錯,可移除後再執行。善用 SQL Server Agent 作業可有效自動化資料庫維護、資料同步、報表產出等常態性工作。掌握建立、排程、歷史管理、錯誤排除與遷移技巧,能大幅提升 DBA 運維效率。