自動化收集SQLSERVER診斷資訊
相信很多人都遇到過當SQLSERVER出現問題的時候,而你又解決不了需要DBA或者微軟售後支援工程師去幫忙解決問題,那麼他們一般需要你收集一些系統資訊和SQLSERVER診斷資訊。
而收集這些資訊又需要圖形工具,又需要指令,步驟又非常複雜。
我們要按照步驟一步一步把需要的資訊收集全,在收集的過程中,往往折騰幾次就頭痛了
解決問題的工具
這個問題隨著一個在SQL2005裡的工具的出現而得到瞭解決
這個工具可以自動收集很多資訊,擴充了原來的應用,增強了其資訊收集的能力
這個工具就是SQLDIAG.exe SQL代表:SQLSERVER DIAG 代表Diagnostic(診斷)
SQLDiag這個工具可以收集的資訊有:
(1)Windows事件記錄
(2)SQLSERVER ErrorLog,以及SQL配置資訊,一些重要運行資訊
(3)SQL曾經產生的DUMP檔案
(4)伺服器系統配置資訊
(5)同時包含有系統和SQL效能計數器的效能日誌
(6)伺服器端Trace
這個工具可以協助DBA自動開啟伺服器端Trace,比用SQLSERVER Profiler要安全多了
因為SQLSERVER Profiler屬於用戶端跟蹤工具,而且需要消耗系統資源跟伺服器通訊需要
處理序間通訊,而這個工具用的是伺服器端Trace
SQLDiag工具預設安裝在:C:\Program Files\Microsoft SQL Server\90\Tools\Binn
C盤是我的SQLSERVER安裝路徑,大家安裝SQLSERVER不是選擇預設路徑的話可能跟我不一樣
使用工具
這個工具需要在命令列視窗運行,可以在命令列直接運行\SQLdiag.exe,工具會使用預設的配置,收集系統資訊
把SQLDIAG.exe拖到cmd視窗,按斷行符號鍵就可以啟動了,詳細步驟看下圖
當出現SQLDIAG Collection started. Press Ctrl+C to stop. 資訊以後就按Crtl+C,終止這個工具的執行。
SQLDIAG 工具會在Binn目錄下產生三個XML檔案,並且產生一個SQLDIAG子目錄,存放剛才收集的資訊
使用預設配置(即Binn目錄下的SQLDiag.xml)只會收到:
(1)SQL errorlog檔案內容,以及SQL配置資訊和一些重要運行資訊(XXXX_sp_sqldiag_Shutdown.out)
(2)SQL曾經產生的dump記錄(XXXX_SQLDUMPER_ERRORLOG.log)
(3)伺服器系統配置資訊(XXXX_MSINFO32.txt)
(4)SQL預設開啟的Default Trace檔案(log_XXX.trc)
使用設定檔
你可以使用另外兩個SQLDiag內建的XML設定檔SD_General.xml 和 SD_Detailed.xml,這兩個xml檔案跟SQLDiag.exe在同一目錄下,
如果使用這兩個設定檔就能夠收集到SQL Trace和效能日誌。
但是如果要使用這兩個設定檔所產生的檔案就會比較大,放在SQL安裝目錄下就不再合適,
需要在SQLDiag裡指定輸出檔案路徑。
例子 在cmd下輸入:
格式:SQLdiag.exe /I <configure_file> /O <output_directory>
我使用SD_General.XML設定檔,配置F:\SQLDIAOUT為輸出目錄,這個檔案夾不用預先建立好,他最幫你自動建立
SQLdiag.exe /I SD_General.XML /O F:\SQLDIAOUT
啟動並執行過程中能夠看到SQLdiag開啟Perfmon(AddingPerfmon counters)和Trace(Starting Profiler Trace)
當問題跟蹤完畢以後,再按Ctrl+C工具會停止日誌收集。
有些資訊是在工具關閉前收集的,所以可能要等一會才能完全停止
而在目錄下 F:\SQLDIAOUT目錄,可以看到以下資訊
(1)SQL Trace檔案(XXXX_sp_trace.trc)
(2)Windows事件記錄(XXXX_applog_Shutdown.txt,XXXX_seclog_Shutdown.txt,XXXX_syslog_Shutdown.txt)
(3)Windows效能日誌(SQLdiag.blg) 用效能監控器也打不開這個檔案,要使用系統內建的小工具
總結
實際上,兩個XML設定檔SD_General.xml 和 SD_Detailed.xml的主要區別是SD_Detailed.xml會在SQL Trace裡收集更多的事件,
所以輸出會要大很多。
DBA可以根據需要選擇其中一個
缺點:
SQLdiag的唯一缺點,是不會定期查詢系統管理視圖DMV,
所以建議自動化資訊收集是SQLdiag(使用SD_General.xml 和 SD_Detailed.xml做設定檔),在加上一些
系統動態管理檢視作為輔助