[概念] 預設的追蹤(Default Trace)與 SQL Server 記錄檔
在發生SQL Server錯誤與問題時,都會希望有Log資訊來查看當時可能發生什麼事情造成,本文簡介「SQL Server 記錄檔」與「預設的追蹤(Default Trace)」的資訊與大家分享。
「SQL Server 記錄檔」可用來記錄SQL Server中特定的系統事件與使用者自訂事件。當然,SQL Server發生問題時,可以先檢視此功能來看系統有產生怎樣的訊息來解決,但有可能還不夠,SQL Server還有一個可以去查看的資料,稱為「預設的追蹤」。
「預設的追蹤」(Default Trace)是SQL Server 2005以後的安全監控的功能,SQL Server本身將需要的事件與處理追蹤並記錄,與 SQL Server Profiler一樣都是將收集到的資料記錄為追蹤檔案(*.trc),可提供豐富的活動記錄檔,可為DBA提供疑難協助,以進行第一時間的診斷。在sp_configure的進階設定檔當中,預設已將選項「default trace enabled」為1 (Enable) 。
接著,我們到SQL Server的安裝目錄下C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log會看到許多的檔案,其中ERRORLOG開頭的檔案是SQL Server記錄檔的實體檔案,SQLAGENT開頭的是「SQL Server Agent的錯誤記錄檔」(對應設定下圖右),而「預設的追蹤」是log開頭的檔名。需要查看該檔案時,建議選擇查詢事件的日期時間檔案,複製到其他路徑後,再用SQL Server Profiler開啟,以避免過多的不必要的記錄檔作載入。若需要一次查看多個檔案,則會出現下列提示「您已答換用檔案結尾,要繼續從下一個換用檔案讀取嗎?」
下述SQL語法,可傳回指定追蹤或所有現有追蹤的相關資訊。
SELECT * FROM ::fn_trace_getinfo(default)
資料行名稱 | 資料型態 | 說明 |
traceid | int | 追蹤的識別碼 |
property | int |
追蹤的屬性: 1= 追蹤選項。如需詳細資訊,請參閱<sp_trace_create (Transact-SQL)>中的 @options。 2 = 檔案名稱 3 = 大小上限 4 = 停止時間 5 = 目前追蹤狀態。0 = 已停止。1 = 執行中。 |
value | spl_variant | 追蹤屬性的對應資訊 |
我們可以得知,每個追蹤檔最大上限為20MB,超過20MB則自動換用產生新檔案。另外,當每次重開SQL Server時(包含OS開關機)也會建立新的追蹤檔,而SQL Server預設在該路徑下會保留5個追蹤檔案,故當上述換檔的條件滿足時,預設的追蹤是無法保留太久的歷史資料的,故請注意。
若不需要看那麼細的資訊,SQL Server將特定系統事件和使用者自訂事件記錄到「SQL Server 記錄檔」之中,一樣會有發生時間與訊息等資訊來解決 SQL Server 的相關問題。在SSMS的「管理」→「SQL Server 記錄檔」→「檢視SQL Server記錄檔」,即可開啟我們之前介紹存放在C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log ERRORLOG開頭的檔案是來作查閱。
與預設的追蹤相比,SQL Server 記錄檔備份可設定到最多99個檔案,每次啟動 SQL Server 的執行個體就會建立一個新的錯誤記錄檔,不勾選設定則為預設值備份6個記錄檔,超過系統會進行回收。
或許不見得我們都需要看到預設的追蹤,但有些設定,會造成SQL Server 記錄檔沒有記錄到,像筆者曾經要取得登入SQL Server發生的錯誤資訊,卻只有在預設的追蹤檔看到,SQL Server 記錄檔卻沒有
後來發現是因為在「伺服器屬性」→「登入稽核」的選項設成「無」所導致,預設選項應為「僅限失敗的登入」,發生登入錯誤則SQL Server 記錄檔會有記載(如下右圖)
資料來源:
- http://technet.microsoft.com/zh-tw/library/ms175513(SQL.90).aspx default trace enabled 選項
- http://msdn.microsoft.com/en-us/library/ms173875.aspx fn_trace_getinfo (Transact-SQL)
- http://msdn.microsoft.com/zh-tw/library/ms177285.aspx 設定 SQL Server 錯誤記錄檔 (一般頁面)
- http://www.dbworld.com.tw/ DB World 資料庫專家電子雜誌 2007年10月第68期,預設的追蹤(Default Trace)之簡介