Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ ERRORLOG -- 當前日志(無擴展名) ERRORLOG.1 -- 上一次啟動 ERRORLOG.2 -- 上上次 ... ERRORLOG.6 -- 最多保留 6 個歷史 + 1 個當前 = 7 個文件
每次服務啟動:新建 ERRORLOG,舊文件遞增重命名,ERRORLOG.6 被刪除。
xp_readerrorlog 存儲過程程序化讀取生產環境啟用登錄審計時,ERRORLOG 可能達數 GB,打開極慢。
不重啟服務循環日志:
EXEC sp_cycle_errorlog;
-- 或
DBCC ERRORLOG;
效果等同服務重啟:生成新 ERRORLOG,舊文件遞增,最舊刪除。
-- 創建作業,每天/每周執行一次
EXEC msdb.dbo.sp_add_job @job_name = 'Cycle ErrorLog Daily';
EXEC msdb.dbo.sp_add_jobstep @job_name = 'Cycle ErrorLog Daily',
@step_name = 'Cycle', @subsystem = 'TSQL',
@command = 'EXEC sp_cycle_errorlog;';
EXEC msdb.dbo.sp_add_jobschedule @job_name = 'Cycle ErrorLog Daily',
@freq_type = 4, @freq_interval = 1, @active_start_time = 020000; -- 每天 02:00
EXEC msdb.dbo.sp_add_jobserver @job_name = 'Cycle ErrorLog Daily';
路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer
值名:NumErrorLogs (REG_DWORD)
值:期望保留數量(如 20)
EXEC xp_instance_regwrite
N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer',
N'NumErrorLogs', REG_DWORD, 20;
-e 參數,修改後路徑:-eD:\NewLogPath\ERRORLOG登錄審計 = 失敗/成功/全部)