Daily_Index_Maintenance)-- 步驟類型選擇
-- 1. Transact-SQL 指令碼 (TSQL) - 最常用
-- 2. CmdExec - 執行 .bat/.exe
-- 3. PowerShell - 現代化腳本
-- 4. SSIS 套件 - ETL 流程
-- 5. 複寫 - 發佈/訂閱同步
-- 簡單陳述式
BACKUP DATABASE SalesDB TO DISK = 'D:\Backup\SalesDB_Full.bak' WITH INIT, COMPRESSION;
-- 執行儲存程序
EXEC dbo.usp_IndexOptimize @Databases = 'USER_DATABASES', @FragmentationHigh = 'REBUILD';
-- 多步驟依賴:步驟 1 成功 → 步驟 2,失敗 → 步驟 3 (通知)
| 排程類型 | 適用場景 | 範例 |
|---|---|---|
| 定期重複 | 例行維護、備份、報表 | 每天 02:00、每週日 03:00 |
| CPU 閒置 | 資源密集型離線作業 | CPU < 20% 時啟動 |
| 單次 | 一次性部署、修補 | 2024-01-15 04:00 |
| 啟動時 | 服務重啟後初始化 | Agent 啟動時執行 |
-- 企業管理員 → SQL Server Agent 右鍵 → 屬性 → 作業系統
-- 或 T-SQL 查詢/修改 msdb 系統表
| 設定 | 預設值 | 建議值 (高頻作業) | 說明 |
|---|---|---|---|
| 作業歷程記錄日誌最大大小 (行數) | 1,000 | 100,000 | 總上限,超過則截斷舊記錄 |
| 每個作業歷程記錄最大行數 | 100 | 60 (每日 2 次 × 30 天) | 單一作業保留上限 |
兩者有制約關係:單一作業上限 × 作業數量 ≤ 總上限。依實際作業數量調整。
原因:msdb.dbo.sysjobs.originating_server 仍存舊伺服器名稱。
USE msdb;
GO
-- 查詢受影響作業
SELECT job_id, name, originating_server
FROM sysjobs
WHERE originating_server <> @@SERVERNAME;
-- 更新為目前伺服器名稱
UPDATE sysjobs
SET originating_server = @@SERVERNAME
WHERE originating_server <> @@SERVERNAME;
或針對單一作業:
UPDATE sysjobs
SET originating_server = 'NewServerName'
WHERE job_id = 'B23BBEBE-A3C1-4874-A4AB-0E2B7CD01E14';
.sql 檔案D:\Backup\ → F:\Backup\)GO 批次分隔符 (非 SSMS 執行時)作業自動化是 DBA 從「手工操作」進化到「流程治理」的關鍵。善用分類、命名規範、歷程保留策略,讓自動化可觀測、可維護。