時間:2024-02-28 13:28作者:下載吧人氣:24
一 .概述
SQL Server 將某些系統事件和用戶定義事件記錄到 SQL Server 錯誤日志和 Microsoft Windows 應用程序日志中。 這兩種日志都會自動給所有記錄事件加上時間戳。 使用 SQL Server 錯誤日志中的信息可以解決SQL Server的相關問題。
查看 SQL Server 錯誤日志可以確保進程(例如,備份和還原操作、批處理命令或其他腳本和進程)成功完成。 此功能可用于幫助檢測任何當前或潛在的問題領域,包括自動恢復消息(尤其是在 SQL Server 實例已停止并重新啟動時)、內核消息或其他服務器級錯誤消息。
使用 SQL Server 或任何文本編輯器可以查看 SQL Server Management Studio 錯誤日志。默認情況下,錯誤日志位于 Program FilesMicrosoft SQL ServerMSSQL.nMSSQLLOGERRORLOG 和 ERRORLOG.n 文件中。例如: 我電腦win7上將sql server 2008 r2數據庫安裝在D:Program Files目錄下,錯誤日志路徑為 D:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLLog
每當啟動 SQL Server 實例時,將創建新的錯誤日志信息,sqlserver系統自動調用 exec sp_cycle_errorlog 系統存儲過程,該存儲過程會關閉當前的錯誤日志文件,并循環錯誤日志擴展編號來循環使用錯誤日志文件,而不必重新啟動 SQL Server實例 (區別mysql下 有四種日志文件,文件會一直增長,需要管理員去清除,避免影響磁盤空間) 。通常, SQL Server 保留前六個日志的備份, 按照時間順序,依次用文件擴展名.1 .2… .6表示。每重啟一次服務,文件擴展名都會加一, 最早那份會被刪除。
二. Errorlog日志內容
2.1 日志自動記錄的信息大概有如下:
(1) SQL SERVER 的啟動參數,以及認證模式,內存分配模式。
(2) 每個數據庫是否能夠被正常打開。如果不能,原因是什么?
(3) 數據庫損壞相關的錯誤
(4) 數據庫備份與恢復動作記錄
(5) DBCC CHECKDB記錄
(6) 內存相關的錯誤和警告
(7) SQL調度出現異常時的警告。一般SERVER Hang 服務器死機會伴隨著有這些警告
(8) SQL I/O操作遇到長時間延遲的警告
(9) SQL在運行過程中遇到的其他級別比較高的錯誤
(10) SQL內部的訪問越界錯誤(Access Violation)
(11) SQL服務關閉時間
(12) SQL SERVER版本,以及windows和processor基本信息。
2.2 日志開啟跟蹤能看到的信息
(1) 所有用戶成功或失敗的登入
(2) 死鎖及其參與者的信息。跟蹤標志1222 或1204
2.3 日志不能記錄的問題
(1) 阻塞問題。只要阻塞還沒有嚴重到影響線程調度,日志里是不會體現的。
(2) 普通性能問題,超時問題。
(3) windows層面異常。
所以在檢查sqlserver 相關問題的時候,總是從error log著手,如果error log里有一些錯誤或警告,就要確認排查,如果記錄問題的時間與軟件系統出問題時間對得上,就需要著重分析。
三 .跟蹤標志
使用DBCC TRACEON來指定要打開的跟蹤標記的編號,跟蹤標記用于通過控制 SQL Server 的運行方式來自定義某些特征。 啟用的跟蹤標記將在服務器中一直保持啟用狀態,直到執行 DBCC TRACEOFF 語句將其禁用為止。在 SQL Server 中,有兩種跟蹤標志:會話和全局。 會話跟蹤標志對某個連接是有效的,只對該連接可見。 全局跟蹤標志在服務器級別上進行設置,對服務器上的每一個連接都可見。 若要確定跟蹤標記的狀態,請使用 DBCC TRACESTATUS。 若要禁用跟蹤標記,請使用 DBCC TRACEOFF。
— 下面示例是記錄死鎖,跟蹤標志1222 或1204, 腳本如下所示:
–指定打開當前會話的跟蹤標志1222 或1204
DBCC TRACEON (1222,1204)
–以全局方式打開跟蹤標志1222 或1204
DBCC TRACEON (1222,1204, -1);
— 查看跟蹤標志狀態,如下圖所示
DBCC TRACESTATUS
網友評論