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

SQLDIAG 自動化收集 SQL Server 診斷信息:從手工採集到一鍵打包

     編輯:關於SqlServer

痛點

故障徵詢微軟支援時,需提交:事件日誌、ErrorLog、Dump、系統配置、效能計數器、Server-side Trace。手工採集步驟繁、易漏、耗時長。

神器:SQLDIAG.exe

  • 內建於 SQL Server 2005+:C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLDIAG.exe
  • 支援 Server-side Trace(比 Profiler 客戶端輕量、安全)。
  • 輸出結構化目錄,可直接打包寄送支援。

三種運行模式

模式命令收集內容適用場景
預設配置SQLDIAG.exeErrorLog、配置、Dump、系統資訊、Default Trace快速健康檢查
一般診斷SQLDIAG.exe /I SD_General.xml /O D:\DiagOut+ Server-side Trace + Windows 事件日誌 + 效能計數器 (BLG)標準故障採集
詳細診斷SQLDIAG.exe /I SD_Detailed.xml /O D:\DiagOutGeneral 全量 + 更多 Trace 事件 (較大)疑難雜症、微軟支援要求

操作步驟 (General 模式示範)

  1. 以管理員開啟 CMD,切換至 Binn 目錄。
  2. 執行 SQLDIAG.exe /I SD_General.xml /O D:\SQLDIAG_OUT。
  3. 視窗顯示 SQLDIAG Collection started. Press Ctrl+C to stop.。
  4. 複現問題或等待觀察窗口 (建議 5-15 分鐘)。
  5. Ctrl+C 停止,工具完成最後收集並退出。

輸出目錄結構解讀

D:\SQLDIAG_OUT\
├── _sp_trace.trc           -- Server-side Trace (可用 Profiler 開啟)
├── _applog_Shutdown.txt    -- Application 事件日誌
├── _seclog_Shutdown.txt    -- Security 事件日誌
├── _syslog_Shutdown.txt    -- System 事件日誌
├── _SQLDIAG.blg            -- 效能計數器 (用 Relog/PerfMon 開啟)
├── _MSINFO32.txt           -- 系統資訊 (msinfo32)
├── _sp_sqldiag_Shutdown.out-- sp_sqldiag 內部輸出 (配置、版本、DMV 快照)
└── _SQLDUMPER_ERRORLOG.log -- Dump 記錄

效能計數器 .blg 開啟技巧

-- 轉為 CSV 方便 Excel 分析
relog D:\SQLDIAG_OUT\*.blg -f csv -o D:\SQLDIAG_OUT\perf.csv

最佳實踐與避坑

  1. 輸出目錄放非系統盤:Trace 與 BLG 增長快,避免佔滿 C 盤導致 SQL 停擺。
  2. Trace 事件過濾:SD_General.xml 已預設常見事件 (RPC:Completed, SQL:BatchCompleted, Errors, Deadlock Graph);若需特定事件 (如 Wait Stats) 需自訂 XML。
  3. 權限:需 Sysadmin + 本機 Administrators (寫事件日誌、效能計數器)。
  4. 不收集 DMV 歷史:SQLDIAG 不會定期輪詢 DMV;建議搭配 Agent Job 定期寫入 sys.dm_exec_query_stats、sys.dm_os_wait_stats 歷史表。
  5. 版本對應:SQL 2005 用 90 目錄,SQL 2019 用 150 目錄,請用對應版本的 SQLDIAG。

替代方案:PSSDIAG / Data Collector / Azure SQL 診斷

  • PSSDIAG:微軟支援內部增強版,功能更豐富但非公開發布。
  • Data Collector (Management Data Warehouse):持久化收集 DMV、效能計數器,適合長期基線分析。
  • Azure SQL Database:內建 sys.dm_db_resource_stats、Query Performance Insight,無需 SQLDIAG。

SQLDIAG 仍是 On-Prem 故障採集的「瑞士軍刀」,掌握它,採集不再是瓶頸。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved