SQL Server长时间运行可能导致磁盘空间写满

发布时间:  2014-05-22 浏览次数:  277 下载次数:  6
问题描述
1. SQL Server数据库的日志和Windows 2008的日志有”The transaction log for database 'ICD_DB_SERVICE' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases”的告警。

2. 运行DBCC SQLPERF (LOGSPACE)命令检查各个数据库的log空间,发现ICD_DB_SERVICE的log空间全部占满。见下图:
告警信息
The transaction log for database 'ICD_DB_SERVICE' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
处理过程
1. 手工备份ICD_DB_SERVICE的Transaction Log,如下图所示:



2. 以sa用户运行DBCC SQLPERF (LOGSPACE)。运行后ICD_DB_SERVICE数据库的log空间占用率大大降低,如下图。告警消失,并且写ICD_DB_SERVICE数据库成功。



根因
因为SQLSERVER 的recovery modal设置为full,该模式下,SQLSERVER会将所有业务的操作都进行归档,用于数据库异常后,恢复数据库。如果归档日志没有及时备份,会越来越大,直到爆满了为止。需要定期手动备份来解决。
建议与总结
定期手动备份SQLSERVER数据库。

END