首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 錯誤日志管理:位置、循環機制、手動循環、保留數量修改、路徑遷移全指南

     編輯:關於SqlServer

默認位置與命名規則

Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\
  ERRORLOG        -- 當前日志(無擴展名)
  ERRORLOG.1      -- 上一次啟動
  ERRORLOG.2      -- 上上次
  ...
  ERRORLOG.6      -- 最多保留 6 個歷史 + 1 個當前 = 7 個文件

每次服務啟動:新建 ERRORLOG,舊文件遞增重命名,ERRORLOG.6 被刪除。

查看方式

  • SSMS:管理 → SQL Server 日志 → 雙擊
  • 文本編輯器直接打開文件(大文件建議用 Notepad++/VS Code)
  • xp_readerrorlog 存儲過程程序化讀取

大文件問題與手動循環

生產環境啟用登錄審計時,ERRORLOG 可能達數 GB,打開極慢。

不重啟服務循環日志:

EXEC sp_cycle_errorlog;
-- 或
DBCC ERRORLOG;

效果等同服務重啟:生成新 ERRORLOG,舊文件遞增,最舊刪除。

自動化:定時 Job 循環

-- 創建作業,每天/每周執行一次
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';

修改保留文件數量(6~99)

方法一:SSMS 圖形界面

  1. 管理 → SQL Server 日志 → 右鍵「配置」
  2. 勾選「限制錯誤日志文件在回收之前的數目」
  3. 設置「最大錯誤日志文件數」(如 20)

方法二:注冊表

路徑: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;

遷移錯誤日志路徑

  1. SQL Server 配置管理器 → SQL Server 服務
  2. 右鍵實例 → 屬性 → 高級 → 啟動參數
  3. 找到 -e 參數,修改後路徑:
    -eD:\NewLogPath\ERRORLOG
  4. 確定 → 重啟 SQL Server 服務生效

日志內容重點關注

  • 服務啟停時間、版本、版本號
  • 備份/還原成功/失敗記錄
  • 登錄失敗審計(啟用 登錄審計 = 失敗/成功/全部)
  • 死鎖信息(啟用跟蹤旗標 1222/1204)
  • 嚴重錯誤(Severity ≥ 17)、堆棧轉儲

最佳實踐

  • 保留數量設置 20~30,平衡磁盤與排查窗口
  • 每日 Job 循環,防止單文件過大
  • 日志路徑放非系統盤,預留空間告警
  • 關鍵錯誤設置 Agent 警報郵件通知
  • 定期歸檔舊日志至歸檔存儲(合規要求)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved