之前在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 FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLLogERRORLOG.5' 循環到 'C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLLogERRORLOG.6'。SQL Server 外部的進程可能會阻止 SQL Server 讀取這些文件。因此,錯誤日志條目可能已丟失,並且或許不可能查看某些 SQL Server 錯誤日志。請確保任何其他進程都未將該文件鎖定為只寫訪問。"
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
手工刪除那個90G的錯誤日志文件即可。
通過本次的經歷,適當掌握一些SQL SERVER維護命令在實際工作上也非常有必要的,而且相對於ORACEL數據庫,SQL SERVER的維護要相對簡單一些。