SQL?Server使用xp_readerrorlog命令查看錯誤日志
本文探討了SQL Server中查看日志的四種方法,重點介紹了xp_readerrorlog命令的使用方法,xp_readerrorlog命令用于T-SQL讀取SQL Server錯誤日志。
介紹
SQL Server錯誤日志對于解決數(shù)據(jù)庫服務(wù)器的問題很有用。 它包含系統(tǒng)事件和用戶定義的事件信息。 在以下情況下,我們可以使用錯誤日志查看:
有關(guān)SQL Server實例的信息
審核登錄–成功或失敗
數(shù)據(jù)庫恢復(fù)狀態(tài)
記錄的錯誤消息
我們可以使用不同的方法讀取錯誤日志,但是首先,我們應(yīng)該知道錯誤日志的路徑。
SSMS工具查看日志
連接到SSMS中SQL實例,然后導(dǎo)航到“管理”。 展開管理文件夾,然后展開SQL Server日志。 在SQL Server日志中,您可以看到不同的日志-當(dāng)前日志和存檔日志:
雙擊所需的錯誤日志文件,它將在單獨(dú)的窗口中打開錯誤日志:
T-SQL方法查看日志
您可以使用SERVERPROPERTY()命令來了解當(dāng)前的錯誤日志文件位置
SELECT SERVERPROPERTY('ErrorLogFileName') AS 'Error log file location';
您可以瀏覽到目錄,并顯示可用的錯誤日志文件
使用GUI訪問錯誤日志
通常,DBA使用GUI方法讀取錯誤日志,如上所示。 您可能會遇到嘗試打開錯誤日志的問題,但是打開錯誤日志會花費(fèi)很多時間。 此外,它給出了超時問題。 由于錯誤日志過多,可能會發(fā)生這種情況。
通常,我們部署一個SQL Agent作業(yè)來回收錯誤日志文件,以便它不會變得很大。 如果作業(yè)不可用或未運(yùn)行,則可能會導(dǎo)致大量錯誤日志
如果我們?yōu)槌晒Φ牡卿泦⒂昧藢徍耍瑒tSQL Server會為每個成功的數(shù)據(jù)庫連接記錄一個條目。 在繁忙的OLTP系統(tǒng)中,您可能會獲得許多成功的登錄信息,這些登錄信息會淹沒錯誤日志
SQL Server日志備份。 假設(shè)您在SQL實例中有50個數(shù)據(jù)庫。 您每10分鐘配置一次事務(wù)日志備份。 因此,每隔10分鐘,它將在錯誤日志中寫入有關(guān)每個數(shù)據(jù)庫的日志備份的信息。 我們可以禁止顯示這些消息,但這不在本文討論范圍之內(nèi)
如果我們要搜索多個錯誤日志,則使用GUI讀取和過濾日志可能是一項令人沮喪且具有挑戰(zhàn)性的任務(wù)。
查詢以列出錯誤日志及其大小
您可以執(zhí)行以下查詢以列出可用的錯誤日志及其大?。?/p>
EXEC sys.sp_enumerrorlogs;
這里的日期列顯示了特定文件中最后一個條目的時間戳。
使用xp_readerrorlog讀取SQL Server日志文件
我們使用擴(kuò)展存儲過程xp_readerrorlog讀取SQL Server錯誤日志文件。
xp_ReadErrorLog命令的語法
Exec xp_ReadErrorLog <LogNumber>, <LogType>, <SearchItem1>, <StartDate>, <EndDate>, <SortOrder>
LogNumber-存檔編號:錯誤日志的日志號。指定讀取哪個日志。SQL Server最多有7個日志,編號從0到6,其中0表示當(dāng)前日志
LogType-日志類型:指定日志的類型。1表示SQL Server日志,2表示SQL Agent日志
SearchItem1-查詢包含的字符串:指定要在日志中搜索的字符串。這個參數(shù)可以重復(fù),用于進(jìn)一步精確結(jié)果集
StartDate-開始時間:指定讀取日志的開始時間
EndDate-結(jié)束時間:指定讀取日志的結(jié)束時間。需要注意的是,如果要指定時間參數(shù),必須同時指定開始時間和結(jié)束時間
SortOrder-結(jié)果排序:指定結(jié)果集的排序方式,可以是按日期降序(Desc)或升序(Asc)
讓我們使用以下示例了解命令xp_readerrorlog。
讀取當(dāng)前錯誤日志
我們可以在不指定任何參數(shù)的情況下讀取當(dāng)前SQL Server錯誤日志:
EXEC xp_ReadErrorLog
讀取SQL Server錯誤日志
在以下命令中,我們使用以下參數(shù):
EXEC xp_ReadErrorLog 0,1
讀取SQL Server代理日志
在此命令中,我們?yōu)長ogType參數(shù)2指定一個值,該值引用SQL Server代理日志:
EXEC xp_ReadErrorLog 0,2
讀取當(dāng)前SQL Server錯誤日志并搜索文本“警告”
此命令在當(dāng)前SQL Server錯誤日志文件中搜索文本警告:
EXEC xp_ReadErrorLog 0, 1, N'Warning'
我們需要使用N將文本放在單引號中。我們可能會收到帶有N的以下錯誤消息。它將字符串聲明為Nvarchar數(shù)據(jù)類型,而不是Varchar:
消息22004,級別12,狀態(tài)1,第0行
執(zhí)行擴(kuò)展存儲過程時出錯:無效的參數(shù)類型
讀取當(dāng)前SQL Server錯誤日志并搜索多個條件
此查詢在當(dāng)前SQL Server錯誤日志中搜索文本數(shù)據(jù)庫和初始化。 這兩個條件都應(yīng)滿足以返回結(jié)果:
EXEC xp_ReadErrorLog 0, 1, N'Database',N'Initialization'
在特定持續(xù)時間內(nèi)讀取當(dāng)前SQL Server錯誤日志
假設(shè)我們要搜索SQL Server錯誤日志特定的持續(xù)時間。 假設(shè)我們要搜索2019年11月7日午夜至9 AM之間的關(guān)鍵字恢復(fù)。 我們可以采用以下格式指定開始日期和結(jié)束日期參數(shù):
EXEC xp_readerrorlog 0, 1, N'Recovery', N'', N'2019-11-07 00:00:01.000', N'2019-11-07 09:00:01.000'
在輸出中,您可以看到結(jié)果從開始日期到結(jié)束日期按升序排序。 我們可以指定參數(shù)desc,以便將結(jié)果從結(jié)束日期到開始日期按降序排序:
EXEC xp_readerrorlog 0, 1, N'Recovery', N'', N'2019-11-07 00:00:01.000', N'2019-11-07 09:00:01.000', N'desc'
使用變量讀取特定時間段內(nèi)的多個條件的當(dāng)前SQL Server錯誤日志
我們可以使用以下查詢在變量中指定所需的參數(shù),并在命令xp_readerrorlog中使用這些變量。
它使用以下條件:
搜索關(guān)鍵字Recovery和指定開始和結(jié)束日期
DECLARE @logFileType SMALLINT= 1; DECLARE @start DATETIME; DECLARE @end DATETIME; DECLARE @logno INT= 0; SET @start = '2019-11-07 00:00:01.000'; SET @end = '2019-11-07 09:00:00.000'; DECLARE @searchString1 NVARCHAR(256)= 'Recovery'; DECLARE @searchString2 NVARCHAR(256)= 'MSDB'; EXEC master.dbo.xp_readerrorlog @logno, @logFileType, @searchString1, @searchString2, @start, @end;
結(jié)論
本文探討了SQL Server中查看日志的四種方法,重點介紹了xp_readerrorlog命令的使用方法。 它有助于對SQL Server中的問題進(jìn)行故障排除,避免因特定情況而從GUI讀取大型錯誤日志的麻煩。
到此這篇關(guān)于SQL Server使用xp_readerrorlog命令查看錯誤日志的文章就介紹到這了,更多相關(guān)xp_readerrorlog讀取mssql錯誤日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sql函數(shù) REGEXP_REPLACE的使用方法小結(jié)
假設(shè)您的數(shù)據(jù)在正文中有不必要的空格,您希望用單個空格來替換它們,利用REPLACE函數(shù) ,這篇文章給大家介紹sql函數(shù) REGEXP_REPLACE的使用方法小結(jié),感興趣的朋友一起看看吧2023-11-11SQL Server 在分頁獲取數(shù)據(jù)的同時獲取到總記錄數(shù)
本文通過兩種方法給大家介紹SQL Server 在分頁獲取數(shù)據(jù)的同時獲取到總記錄數(shù),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05更改SQL Server更改當(dāng)前數(shù)據(jù)庫的所有者:sp_changedbowner
更改SQL Server更改當(dāng)前數(shù)據(jù)庫的所有者:sp_changedbowner...2007-02-02SQL Server數(shù)據(jù)庫開發(fā)的二十一條法則
如果你正在負(fù)責(zé)一個基于SQL Server的項目,或者你剛剛接觸SQL Server,你都有可能要面臨一些數(shù)據(jù)庫性能的問題,這篇文章會為你提供一些有用的指導(dǎo)(其中大多數(shù)也可以用于其它的DBMS)。2010-06-06SQLSERVER查看數(shù)據(jù)庫日志方法與語句示例代碼(已親測)
在數(shù)據(jù)庫使用很久后日志文件會累計的越來越大,如果硬盤空間不足可能會導(dǎo)致宕機(jī),下面這篇文章主要給大家介紹了關(guān)于SQLSERVER查看數(shù)據(jù)庫日志方法與語句的相關(guān)資料,需要的朋友可以參考下2023-03-03什么是數(shù)據(jù)庫 SQL Execution Plan(簡單介紹)
SQL Execution PlanSQL 執(zhí)行計劃是數(shù)據(jù)庫管理系統(tǒng)在執(zhí)行SQL語句時,對如何高效檢索數(shù)據(jù)進(jìn)行的一系列優(yōu)化步驟的描述,這篇文章主要介紹了什么是數(shù)據(jù)庫 SQL Execution Plan,需要的朋友可以參考下2024-03-03SQL Server數(shù)據(jù)庫按百分比查詢出表中的記錄數(shù)
這篇文章主要介紹了SQL Server數(shù)據(jù)庫在一個表中按百分比查詢出記錄條數(shù)的方法及代碼示例,需要的朋友可以參考下2015-08-08