最近在给客户做一个商城系统,登录服务器发现,磁盘空间快满了,最后排查下来,发现是商城数据库的日志文件过大,150G!
网上查了下方法,都需要分离,如果分离的话,就要影响系统运行了。后来网上找了段SQL语句,试了,有效,代码如下:
USE[master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模式
GO
USE 要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定
GO
USE[master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL --还原为完全模式
GO
150G的日志文件,几十秒就清理完成了。
如果需要用分离的方式,可以参考下面的方式:
在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完整模式,一定必务要再改回完整模式,不然数据库就不支持时间点备份了。
1、选择数据库–属性—选项—恢复模式–选择简单。
2、收缩数据库后,再调回完整。