早上检查数据库的备份邮件时,发现一台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小时一次的事务日志备份文件消耗了不少存储空间。