天天看點

清除SQL SERVER錯誤日志出現作業系統錯誤的解決方法

SQL Server 外部的程序可能會阻止 SQL Server 讀取這些檔案。是以,錯誤日志條目可能已丢失,并且或許不可能檢視某些 SQL Server 錯誤日志。請確定任何其他程序都未将該檔案鎖定為隻寫通路

之前在UAT環境搭建的SQL SERVER 2008 R2資料庫一直用得比較正常,但最近發現在Sharepoint中不能進行任何操作了,開始以為是什麼配置出了問題(因為一直在研究一些新的應用和內建,需要不斷地測試),但後來發現是資料庫硬碟沒用一點空間了,那麼自然是不能存任何資料了,是以最先開始清理一些無用的資料庫日志,磁盤空間多了幾個G的容量,但是等到第二天情況依然如此,資料庫硬碟還是滿了,問題依舊存在,背景仔細檢查了一下所有資料庫的容量(因為最初以為是資料庫空間每天增長太快了把硬碟占滿了),發現才十幾個G的,而硬碟總空間有126G,是以進一步檢查了這個磁盤空間,發現才三十多個G,一開始感覺很納悶,為什麼會缺少将近90G呢?後來發現是原來windows賬号的關系,之前用的登入賬号權限有限,無法擷取磁盤的所有空間容量,是以換了管理者的賬号登入後,發現原來是SQL SERVER有一個錯誤日志的容量将近90G,總算找到磁盤滿的原因了,下一步就是如何去解決它。

一開始聽了同僚的建議,直接通過檔案剪貼的方式把這個SQL SERVER 錯誤日志檔案直接移動到另外一個硬碟上,折騰了好幾個小時最終以失敗告終,說明錯誤日志被系統程序占用着,并不能通過這個暴力方式進行,是以走回正軌,通過SQL SERVER維護指令進行操作,最終成功清除了90G的錯誤日志檔案,具體過程如下:

由于預設情況下,SQL Server 儲存 7 個 ErrorLog 檔案,名為:

ErrorLog

ErrorLog.1

ErrorLog.2

ErrorLog.3

ErrorLog.4

ErrorLog.5

ErrorLog.6

--清除 SQL Server 錯誤日志檔案 存檔
EXEC sp_cycle_errorlog
GO
           

執行一次EXEC sp_cycle_errorlog就會産生一個新的errorlog,然後把errorlog.6給删掉。就是先進先出(隊列類似的情況)這樣循環6次就可以把errorlog都重新整理一遍。

當查詢視窗中,出現以下錯誤資訊時:

消息 17049,級别 16,狀态 1,過程 sp_cycle_errorlog,第 9 行

 由于出現作業系統錯誤 '5(拒絕通路。)',無法将錯誤日志檔案從 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG.5' 循環到 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG.6'。SQL Server 外部的程序可能會阻止 SQL Server 讀取這些檔案。是以,錯誤日志條目可能已丢失,并且或許不可能檢視某些 SQL Server 錯誤日志。請確定任何其他程序都未将該檔案鎖定為隻寫通路。"

DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理者聯系。

手工删除那個90G的錯誤日志檔案即可。      

通過本次的經曆,适當掌握一些SQL SERVER維護指令在實際工作上也非常有必要的,而且相對于ORACEL資料庫,SQL SERVER的維護要相對簡單一些。

繼續閱讀