批量压缩数据库日志SQL

declare @tb table(sqlstr varchar(2000))
--查询需要压缩的数据库
declare cur cursor for select name from sys.databases where name like 'hb%' or name in ('hz028','hz029')
declare @dbname varchar(50),@log_fileName varchar(50),@sql varchar(1000)
open cur
fetch next from cur into @dbname
while @@fetch_status =0
begin
set @sql = 'USE ['+@dbname+']'
exec(@sql)
set @log_fileName=null
select top 1 @log_fileName=[name] from sys.database_files f  where [type]=1
if @log_fileName is not null
begin
    set @sql='USE ['+@dbname+']'+CHAR(13)+CHAR(10)+'GO'+CHAR(13)+CHAR(10)+'ALTER DATABASE ['+@dbname+'] SET RECOVERY SIMPLE;DBCC SHRINKFILE (N'''+@log_fileName+''', 1, TRUNCATEONLY);ALTER DATABASE ['+@dbname+'] SET RECOVERY FULL WITH NO_WAIT'+CHAR(13)+CHAR(10)+'GO'
	insert into @tb(sqlstr) values(@sql)
end
else
begin
   print @dbname+'日志文件未找到'
end
fetch next from cur into @dbname
end
close cur
deallocate cur
select * from @tb
SELECT a.name [文件名称]  
    ,cast(a.[size]*1.0/128 as decimal(12,1)) AS [文件设置大小(MB)]  
    ,CAST( fileproperty(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [文件所占空间(MB)]  
    ,CAST( (fileproperty(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))*100.0  AS DECIMAL(12,1)) AS [所占空间率%]  
    ,CASE WHEN A.growth =0 THEN '文件大小固定,不会增长' ELSE '文件将自动增长' end [增长模式]  
    ,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN '增量为固定大小'  
        WHEN A.growth > 0 AND is_percent_growth = 1 THEN '增量将用整数百分比表示'  
        ELSE '文件大小固定,不会增长' END AS [增量模式]  
    ,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN cast(cast(a.growth*1.0/128as decimal(12,0)) AS VARCHAR)+'MB'  
        WHEN A.growth > 0 AND is_percent_growth = 1 THEN cast(cast(a.growth AS decimal(12,0)) AS VARCHAR)+'%'  
        ELSE '文件大小固定,不会增长' end AS [增长值(%或MB)]  
    ,a.physical_name AS [文件所在目录]  
    ,a.type_desc AS [文件类型]  
FROM sys.database_files  a  
INNER JOIN sys.sysfiles AS s ON a.[file_id]=s.fileid  
LEFT JOIN sys.dm_db_file_space_usage b ON a.[file_id]=b.[file_id] 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪耀星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值