溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQL代理錯誤日志處理方法

發(fā)布時間:2021-06-30 15:24:15 來源:億速云 閱讀:405 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要講解了“SQL代理錯誤日志處理方法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“SQL代理錯誤日志處理方法”吧!

SQL Server代理是所有實時數(shù)據(jù)庫的核心。代理有很多不明顯的用法,因此系統(tǒng)的知識,對于開發(fā)人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。

如我們在這個系列的前幾篇文章所見,SQL Server代理是由一系列的作業(yè)步驟組成,每個步驟是不同類型將要進行的工作。如果你在第4篇所見,SQL Server代理也提供使用數(shù)據(jù)庫郵件發(fā)送提醒的能力。如果出現(xiàn)問題,不管怎樣, 你必須去查看下數(shù)據(jù)庫郵件錯誤日志。在這篇文章里,你會學(xué)到如何理解和查看SQL Server錯誤日志的所有相關(guān)知識。你會查看最常見的錯誤日志,還有理解如何知道當(dāng)一條信息需要你采取的行動,什么是對你最直接的信息。一旦你理解了錯誤日志,當(dāng)你進行SQL Server代理相關(guān)故障排除時,你會節(jié)約大量的時間。

SQL Server代理錯誤日志

SQL Server代理維護它自己的錯誤日志,和SQL Server錯誤日志分開。SQL Server錯誤日志位置SQL Server所在目錄下的\MSSQL\Log目錄(C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log,這篇文章使用SQL Server 2008R2作為默認實例)。SQL Server錯誤日志默認名為ERRORLOG(沒有文件擴展名),SQL Server代理錯誤日志默認名為SQLAGENTOUT。在這篇文章里,我們的大部分時間會花在SQL代理錯誤日志,不管怎樣,你也需要看下SQL Server錯誤日志。

查看SQL Server代理錯誤日志

當(dāng)你首次瀏覽到\MSSQL目錄,并嘗試查看日志目錄,很可能你需要請求提升你的權(quán)限來獲得訪問這個目錄的權(quán)限。默認情況下,SQL Server和SQL Server代理的服務(wù)賬號有這個目錄的讀寫權(quán)限,但你(使用用戶賬號)不能訪問。如果你是本地管理員,你可以授權(quán)自己訪問后,直接查看日志文件。如圖1所示,默認的權(quán)限和安全設(shè)置是這樣的。不要從目錄里移除你服務(wù)賬號的權(quán)限,否則SQL Server和SQL Server代理會不能正常工作。

SQL代理錯誤日志處理方法

插圖1:SQL Server的Log目錄權(quán)限

一旦你在\MSSQL\LOG目錄里,對于SQL Server和SQL Server代理,你都會看到很多日志文件,原先的日志文件(只要正常啟動服務(wù),每次都會創(chuàng)建)也在目錄里。SQLAGENT.OUT文件是SQL Server代理的當(dāng)前日志文件,因此這是你要打開的文件。默認情況下,當(dāng)你嘗試打開這個文件時,你需要選擇打開這個后綴為.OUT文件的默認程序。記事本就可以,當(dāng)你有另一個喜好,你可以選擇這個擴展文件名的文本查看器(如圖2所示,選擇記事本)。

SQL代理錯誤日志處理方法

插圖2:.OUT文件用記事本打開。

一旦選擇后,SQLAGENT.OUT文件會打開,如插圖3所示。

SQL代理錯誤日志處理方法

插圖3:SQL Server代理錯誤日志(SQLAGENT.OUT)

你很容易發(fā)現(xiàn),應(yīng)該有更好的方式查看錯誤日志,沒錯!SSMS有日志文件查看器,這在第4篇數(shù)據(jù)庫郵件里就已經(jīng)簡單介紹了。切換到錯誤日志,展開SQL Server代理文件夾,錯誤日志文件夾,你會看到當(dāng)前SQL Server代理的日志還有最近的日志。雙擊【當(dāng)前】(或右擊選擇【查看代理日志】)你會看到SQL Server日志查看器,在查看器里當(dāng)前SQL Server代理的錯誤日志已被勾選(如插圖4所示)。

SQL代理錯誤日志處理方法

插圖4:當(dāng)前SQL Server代理日志文件的日志文件查看器

這和在插圖3里顯示的日志文件一樣,但看起來更直觀,更好管理。首先你會注意到的是現(xiàn)在事件分為:信息,警告和錯誤。使用篩選按鈕(如插圖5),你可以增加自己的篩選條件來限制SQL Server代理錯誤日志的項目(或SQL Server的任何錯誤日志,你已經(jīng)看到,在日志文件查看器里,你可以看到所有的日志)

SQL代理錯誤日志處理方法

插圖5:日志文件查看器的篩選設(shè)置

日志文件內(nèi)容

在SQL Server代理日志的開始就有信息消息。我們每步都過一遍,簡單介紹下消息的意思。

[393] 正在等待 SQL Server 恢復(fù)數(shù)據(jù)庫...

SQL Server代理服務(wù)已經(jīng)啟動,但還不能配置和運行它,因為msdb數(shù)據(jù)庫還不可用。SQL Server代理的大部分配置和設(shè)置都保存在msdb。部分配置細信息保存在系統(tǒng)注冊表里。SQL Server不能啟動直到msdb數(shù)據(jù)庫恢復(fù)。消息前的數(shù)字(393)是SQL Sever代理的內(nèi)部信息號,本人從沒見過公開文檔記錄SQL Agent的錯誤編號。

[100] Microsoft SQLServerAgent 版本 10.50.1600.1 (內(nèi)部版本號 x86 unicode 零售): 進程 ID 3412

這是一條非常有用的信息。SQL Server代理版本號(即版本、服務(wù)包、和修補程序)。在此例中,它是SQL Server 2008 R2,采用sp1更新包。你可以在SQLServerCentral找到版本號。
接下來的事情是,這是一個SQL Server x86版本(即32位),這是一個標(biāo)準(zhǔn)的零售版本的產(chǎn)品。最后,對SQL Server代理服務(wù)的Windows進程ID標(biāo)識。如果你使用Windows故障排除工具(即使是簡單的任務(wù)管理器),你會看到一個進程ID,這將幫助 你把SQL Server代理服務(wù)關(guān)聯(lián)到Windows信息。

SQL代理錯誤日志處理方法

插圖6:有PID列顯示的任務(wù)管理器

[101] SQL Server PC201510181429 版本 10.50.1600 (連接限制: 0)

這一消息標(biāo)識SQL服務(wù)器的名稱(PC201510181429),以及SQL Server的版本號。注意“0連接限制”--即是沒有特定的配置,因此允許無限的連接(直到耗盡內(nèi)存)。

[102] SQL Server ODBC 驅(qū)動程序版本 10.50.1600
[103] 驅(qū)動程序使用的 NetLib 是 DBNETLIB.DLL;本地主機服務(wù)器是

這兩則消息表明使用ODBC的版本號(SQL Server代理使用ODBC連接回SQL服務(wù)器本地副本,事實上,它是用當(dāng)?shù)氐腄BNETLIB.DLL為連接。

[310] 檢測到 2 個處理器和 3327 MB RAM
[339] 本地計算機是 PC201510181429,運行的是 Windows NT 6.1 (7601) Service Pack 1

接下來的兩行顯示的SQL服務(wù)器CPU和內(nèi)存配置,以及Windows版本。

[432] 子系統(tǒng)緩存中有 12 個子系統(tǒng)

這是第二篇(SQL Server代理作業(yè)步驟和子系統(tǒng))討論過的SQL Server代理子系統(tǒng)。作業(yè)下有各種類型可以運行子系統(tǒng)(如CmdExec、ActiveX 腳本)以及一些支持復(fù)制,分析服務(wù)的子系統(tǒng),你可以在msdb.dbo.syssubsystems表中查看子系統(tǒng)清單。

[364] 尚未啟動 Messenger 服務(wù) - 將不發(fā)送 NetSend 通知

雖然這個歸類為一個錯誤,在大部分系統(tǒng)上你可以安全地忽略。Net send通知,已經(jīng)從SQL Server的幾個版本中取消,并且相關(guān)的Windows服務(wù)默認不是開啟的。如果你還在使用Net send消息,看到了這樣的錯誤,你需要更改Windows Messenger服務(wù)為自動啟動。

[129] SQLSERVERAGENT 在 Windows NT 服務(wù)控制下啟動

這個消息表明,SQL Server代理作為服務(wù)啟動,而不是在命令提示符窗口。

[260] 無法啟動郵件會話(原因: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException: 無法從數(shù)據(jù)庫中讀取郵件配置信息。...... [355] 郵件系統(tǒng)初始化失敗;請檢查配置設(shè)置

這些消息表明在數(shù)據(jù)庫郵件配置中出錯。回顧第四篇數(shù)據(jù)庫郵件,查看是否有類似的問題。

[396] 尚未定義空閑 CPU 條件 - OnIdle 作業(yè)計劃將不起任何作用

這條警告表明一個SQL Server代理設(shè)置沒有配置,可能阻止某些作業(yè)運行。你可以設(shè)置作業(yè)在CPU“空閑”時運行(在第一篇提到過)。然而,在這個系統(tǒng)中空閑的定義還沒有被 設(shè)置。在SSMS配置此選項,右擊SQL Server代理,選擇屬性,然后單擊高級選項卡。配置空閑CPU條件如插圖7所示

SQL代理錯誤日志處理方法

插圖7:配置空閑CPU條件

你可以想象,在你的SQL Server代理錯誤日志還會有許多其他的錯誤,你應(yīng)該定期檢查日志。請牢記,代理日志不是用來排查作業(yè)故障的,你需要查看每個失敗作業(yè)步驟的歷史記錄。我們在后續(xù)章節(jié)會做更多的故障排除。

配置SQL Server代理錯誤日志

您可以在SSMS中配置一些SQL Server代理錯誤日志的屬性,另一些屬性需要使用注冊表編輯器(這是不支持的,所以不建議在生產(chǎn)系統(tǒng))。
右 擊SSMS中SQL Server代理->錯誤日志,你會看到一組選項。首先是“配置”,選擇該選項,你會看到類似插圖8。你可以更改SQL Server代理錯誤日志文件的存放位置(不推薦),同樣可以更改代理日志級別。這些設(shè)置不能憑直觀分辨–如果你勾選“錯誤”,你會看到錯誤和信息性消 息。如果你勾選“警告”,你會看到警告和信息性消息。如果你只勾選信息,在錯誤日志中你看不到任何錯誤或警告消息。
對話框中另一選項是,寫入OEM錯誤日志,意味著寫一個非Unicode的錯誤日志文件。理論上你可以通過它節(jié)省空間,但也不推薦。

SQL代理錯誤日志處理方法

插圖8——配置SQL Server代理

退出插圖8,右擊錯誤日志,另一個選項是“回收”。此選項會關(guān)閉現(xiàn)有的SQL Server代理錯誤日志并開始一個新的日志文件,重命名當(dāng)前SQLAGENT.OUT文件為SQLAGENT.1(所有舊的文件后綴數(shù)字遞增,如 SQLAGENT.1變成SQLAGENT.2)。如果你要將當(dāng)前的日志文件發(fā)送給SQL Server產(chǎn)品支持,這樣操作將非常有用。
SQL Server代理一些其他配置需在注冊表中設(shè)置(事實上,上面所做操作的設(shè)置都會更改注冊表中對應(yīng)的鍵值)。記住不建議直接修改注冊表,所以更改這些設(shè)置 要你自己承擔(dān)風(fēng)險。然而,如果你想查看可用的設(shè)置(一些SQL Server代理設(shè)置只能在注冊表中修改),你可以在注冊表中SQL Server實例下查看可用的注冊表鍵設(shè)置。例如,在我的機器上,注冊表鍵位于HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\SQLServerAgent,如插圖9所示

SQL代理錯誤日志處理方法

插圖9:SQL Server代理的注冊表項

如果你的SQL Server代理配置真的有問題時,可能需要描述(或?qū)С?這些設(shè)置給產(chǎn)品支持。

感謝各位的閱讀,以上就是“SQL代理錯誤日志處理方法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對SQL代理錯誤日志處理方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

sql
AI