msdb 資料庫儲存 SQL Server Agent 作業歷史、維護計劃執行記錄等資訊。長期累積會導致 msdb 膨脹,影響備份還原速度、擴大資料庫體積,甚至造成查詢效能下降。建議納入定期維護計劃自動清理。
-- 查看最近 1000 筆記錄
SELECT TOP 1000 * FROM msdb.dbo.sysjobhistory;
-- 清除所有歷史 (生產環境建議保留最近 N 天)
DELETE FROM msdb.dbo.sysjobhistory;
SELECT TOP 1000 * FROM msdb.dbo.sysmaintplan_log;
DELETE FROM msdb.dbo.sysmaintplan_log;
SELECT TOP 1000 * FROM msdb.dbo.sysmaintplan_logdetail;
DELETE FROM msdb.dbo.sysmaintplan_logdetail;
sp_purge_jobhistory 或 sp_maintplan_delete_log 系統存儲過程,指定保留天數。DBCC SHRINKFILE 釋放空間,但頻率不宜過高以免產生碎片。DECLARE @CutoffDate DATETIME = DATEADD(DAY, -30, GETDATE());
DELETE FROM msdb.dbo.sysjobhistory
WHERE run_date < CONVERT(INT, CONVERT(VARCHAR(8), @CutoffDate, 112));
DELETE FROM msdb.dbo.sysmaintplan_log
WHERE end_time < @CutoffDate;
DELETE FROM msdb.dbo.sysmaintplan_logdetail
WHERE end_time < @CutoffDate;