数据库服务器磁盘突然爆了,压缩下数据库日志文件省出不少空间来,解决方案记录下
压缩单个数据库日志文件 依次执行
USE [master]
GO
ALTER DATABASE DataBaseName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DataBaseName SET RECOVERY SIMPLE --简单模式
GO
USE BHG_QtxAppNew
GO
DBCC SHRINKFILE (N'DataBase_log' , 11, TRUNCATEONLY)
GO
USE DataBaseName
SELECT NAME, size FROM sys.database_files
将所有的数据库的日志文件全部压缩依次执行
--第一 将查询结果执行
Select 'ALTER DATABASE '+Name+' SET RECOVERY SIMPLE WITH NO_WAIT ' FROM Master.dbo.SysDatabases where name not like '%tempdb%' orDER BY Name
--第二 将查询结果执行 --简单模式
Select 'ALTER DATABASE '+Name+' SET RECOVERY SIMPLE ' FROM Master.dbo.SysDatabases where name not like '%tempdb%' orDER BY Name
--第三 将查询结果删除最后一个union后执行,再将查询的结果批量执行
Select 'SELECT ''USE '+Name+' '' db,''DBCC SHRINKFILE (N''''''+ NAME+'''''', 11, TRUNCATEONLY)'' FROM '+Name+'.sys.database_files where name like ''%_log%'' union ' FROM Master.dbo.SysDatabases where name not like '%tempdb%' orDER BY Name
--第四 将查询结果执行
Select 'ALTER DATABASE '+Name+' SET RECOVERY FULL WITH NO_WAIT ' FROM Master.dbo.SysDatabases where name not like '%tempdb%' orDER BY Name
--第五 将查询结果执行 --还原为完全模式
Select 'ALTER DATABASE '+Name+' SET RECOVERY FULL ' FROM Master.dbo.SysDatabases where name not like '%tempdb%' orDER BY Name
亲测服务器几十个数据库,释放出了20多个G