sql server 錯誤日誌errorlog

来源:https://www.cnblogs.com/MrHSR/archive/2018/10/28/9862799.html
-Advertisement-
Play Games

一 .概述 SQL Server 將某些系統事件和用戶定義事件記錄到 SQL Server 錯誤日誌和 Microsoft Windows 應用程式日誌中。 這兩種日誌都會自動給所有記錄事件加上時間戳。 使用 SQL Server 錯誤日誌中的信息可以解決SQL Server的相關問題。 查看 SQ ...


一 .概述

  SQL Server 將某些系統事件和用戶定義事件記錄到 SQL Server 錯誤日誌和 Microsoft Windows 應用程式日誌中。 這兩種日誌都會自動給所有記錄事件加上時間戳。 使用 SQL Server 錯誤日誌中的信息可以解決SQL Server的相關問題。

  查看 SQL Server 錯誤日誌可以確保進程(例如,備份和還原操作、批處理命令或其他腳本和進程)成功完成。 此功能可用於幫助檢測任何當前或潛在的問題領域,包括自動恢復消息(尤其是在 SQL Server 實例已停止並重新啟動時)、內核消息或其他伺服器級錯誤消息。

  使用 SQL Server 或任何文本編輯器可以查看 SQL Server Management Studio 錯誤日誌。預設情況下,錯誤日誌位於 Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG 和 ERRORLOG.n 文件中。例如: 我電腦win7上將sql server 2008 r2資料庫安裝在D:\Program Files目錄下,錯誤日誌路徑為 D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log

  每當啟動 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

      

  -- 以全局方式關閉跟蹤標誌狀態
 DBCC TRACEOFF(1222,1204, -1)

  其它跟蹤標誌號可參考官方文檔:

  https://docs.microsoft.com/zh-cn/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql?view=sql-server-2017

 

 . 配置errorlog

  在對象資源管理器中,展開 SQL Server 的實例,展開“管理”,右鍵單擊“SQL Server 日誌”,再單擊“配置” 如下圖所示:

  4.1 限制錯誤日誌文件在回收之前的數目
    若選中此選項,將限制在錯誤日誌回收前可以創建的錯誤日誌數。 每次啟動 SQL Server 實例時都將創建新的錯誤日誌。 SQL Server 將保留前六個日誌的備份,除非選中此選項併在下麵指定一個不同的最大錯誤日誌文件數。

  4.2  最大錯誤日誌文件數

    指定錯誤日誌文件回收前創建的最大錯誤日誌文件數。 預設值為 6,即 SQL Server 在回收備份日誌前保留的以前備份日誌的數量。

 

. SQL Server 代理錯誤日誌

  SQL Server 預設情況下,代理創建錯誤日誌來記錄警告和錯誤。 SQL Server 最多可以維護九個 SQL Server 代理錯誤日誌。 每個存檔日誌都有一個擴展名,指示該日誌的相對存在時間。 例如上圖,當前表示最新的存檔錯誤日誌,而編號1 表示最舊的存檔錯誤日誌。

  預設情況下,執行跟蹤消息不寫入 SQL Server 代理日誌錯誤,因為它們會將日誌填滿。 如果錯誤日誌已滿,會降低選擇和分析更嚴重的錯誤的能力。 因為日誌會增加伺服器的處理負荷,所以請務必仔細考慮是否值得將執行跟蹤消息捕獲到錯誤日誌中。 通常,最好僅在調試某個特定問題時捕獲所有消息

 

六.查看errorlog

  Errorlog 文件以文本方式記錄,用任何文件編輯器都能打開。下麵介紹二個存儲過程來過濾查看日誌文件。

  6.1  xp_enumerrorlogs

    通過xp_enumerrorlogs可以查看錯誤日誌文件的存檔和占用空間大小, 預設參數是1, 表示查看sql server日誌。 參數2 表示查看sql server 代理錯誤日誌列表。腳本如下所示:

--  查看sql server日誌列表
EXEC xp_enumerrorlogs

 -- 查看代理錯誤日誌
   EXEC xp_enumerrorlogs 2

  6.2 xp_readerrorlog

通過系統存儲過程:xp_readerrorlog,能條件過濾日誌內容查看,它一共有7個參數,分別是:
(1). 存檔編號(0~99)

(2). 日誌類型(1為SQL Server日誌,2為SQL Server Agent日誌)

(3). 查詢包含的字元串

(4). 查詢包含的字元串

(5). LogDate開始時間

(6). LogDate結束時間

(7). 結果排序,按LogDate排序(Desc、Asc)

    例1 :查看當前sql server錯誤日誌文件內容。存檔編號預設值是0,日誌類型預設是1,如果要查看當前sql server錯誤日誌文件內容有三種寫法,腳本如下:

EXEC xp_readerrorlog
EXEC xp_readerrorlog 0
EXEC xp_readerrorlog 0,1

    例 2:查看SQL Server日誌歷史存檔為編號1的文件中,發生的時間為2018-10-27 19:00點 至2018-10-27 20:00之間的錯誤,排序方式為時間的倒排序,為了滿足上面的要求,腳本如下:

EXEC xp_readerrorlog 1,1,null,null,'2018-10-27 19:00','2018-10-27 20:00','DESC'

    例3: 查看當前SQL Server日誌文件中,錯誤內容裡面包含字元串:“Login failed for user 'sa'”  的錯誤,腳本如下:

EXEC xp_readerrorlog 0,1,'Login failed for user ''sa'''

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第1節 查看當前系統版本及內核 cat /etc/redhat-release (查看系統版本) CentOS Linux release 7.4.1708 (Core) uname -r (查看系統內核) 3.10.0-693.el7.x86_64 uname -a (查看當前操作系統) x86_ ...
  • 安裝redis 部署集群 參考資料 https://www.cnblogs.com/it-cen/p/4295984.html https://blog.csdn.net/naixiyi/article/details/51346880 https://www.cnblogs.com/Patrick ...
  • mkfs 在磁碟分區上創建ext2、ext3、ext4、ms-dos、vfat文件系統,預設情況下會創建ext2。mkfs用於在設備上構建Linux文件系統,通常是硬碟分區。文件要麼是設備名稱(例如/dev/hda1,/dev/sdb2),要麼是包含文件系統的常規文件。成功返回0,失敗返回1。 實際 ...
  • 有時候,管理員終端登陸了系統,如果離開沒有退出賬戶,則會有安全隱患存在,因此需要優化終端超時。 設置終端超時: export TMOUT=10 永久生效: echo "export TMOUT=600" >>/etc/profile source /etc/profile 檢查是否生效: ...
  • 目的:表操作(表維護) 一、一對一(略過) 二、一對 1、建表原則:在多的一方創建外鍵指向一的一方的外鍵 2、建表:實體中添加 3、操作 1、參數: name屬性:集合屬性名 column屬性: 外鍵列名 class屬性: 與我關聯的對象完整類名 2、級聯操作: cascade save-updat ...
  • Spark 中有兩個類似的api,分別是 reduceByKey 和 groupByKey 。這兩個的功能類似,但底層實現卻有些不同,那麼為什麼要這樣設計呢?我們來從源碼的角度分析一下。 先看兩者的調用順序(都是使用預設的Partitioner,即defaultPartitioner) 所用 spa ...
  • 【前言】在配置主從的時候經常會用到這兩個語句,剛開始的時候還不清楚這兩個語句的使用特性和使用場景。 經過測試整理了以下文檔,希望能對大家有所幫助; 【一】RESET MASTER參數 功能說明:刪除所有的binglog日誌文件,並將日誌索引文件清空,重新開始所有新的日誌文件。用於第一次進行搭建主從庫 ...
  • 在查詢了很多資料以後,發現國內外沒有一篇關於hadoop2集群環境搭建的詳細步驟的文章。 所以,我想把我知道的分享給大家,方便大家交流。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...