早上檢查數據庫的備份郵件時,發現一台Microsoft SQL Server 2008 R2 (SP2)數據庫的Maintenance Report有錯誤
在SSMS里面執行Exec YourSQLDba.Maint.ShowHistoryErrors 729腳本后,發現如下錯誤信息(數據庫名用XXX替代):
<Exec>
<ctx>yMaint.backups</ctx>
<cmd>
backup log [XXXX_XXX]
to disk = 'E:\DB_BACKUP\XXXX_XXX_[2015-01-06_02h03m12_Tue]_logs.TRN'
with noInit, checksum, name = 'YourSQLDba:04h10: E:\DB_BACKUP\XXXX_XXX_[2015-01-06_02h03m12_Tue]_logs.TRN'
</cmd>
<err>Error 3202, Severity 16, level 1 : Write on "E:\DB_BACKUP\XXXX_XXX_[2015-01-06_02h03m12_Tue]_logs.TRN" failed: 112(failed to retrieve text for this error. Reason: 15105)</err>
<err>Error 3013, Severity 16, level 1 : BACKUP LOG is terminating abnormally.</err>
</Exec>
檢查具體的錯誤日志信息發現如下錯誤信息:
日期 2015/1/7 6:16:55
日志 SQL Server (當前 - 2015/1/7 0:30:00)
源 Backup
消息
BackupIoRequest::ReportIoError: write failure on backup device 'E:\DB_BACKUP\XXXX_XXX_[2015-01-06_02h03m12_Tue]_logs.TRN'. Operating system error 112(failed to retrieve text for this error. Reason: 15105).
日期 2015/1/7 6:16:55
日志 SQL Server (當前 - 2015/1/7 0:30:00)
源 Backup
消息
BACKUP failed to complete the command BACKUP LOG XXXX_XXX. Check the backup application log for detailed messages.
出現這個“Operating system error 112(failed to retrieve text for this error. Reason: 15105)”錯誤,意味着數據庫事務日志備份失敗,具體原因是因為備份的磁盤沒有空間了,導致寫入磁盤時出現錯誤。我們另外的一個監控磁盤告警的作業也發出了告警郵件。如下所示:
具體原因是因為其中一個數據庫的事務日志文件增長的比較厲害。導致磁盤空間被迅速消化殆盡,因為2小時一次的事務日志備份文件消耗了不少存儲空間。