之前在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的維護要相對簡單一些。