游标的使用之压缩数据库Log文件

declare @databasename nvarchar(100)
--定义游标以及赋值 获取所有Online的Database Name
declare getDataBaseCursor  cursor for select name from  master.sys.databases where state_desc='online'
--在使用游标之前必须打开它,打开游标
open getDataBaseCursor
--使用fetcth语句取得数据,一条FETCH语句一次可以将一条记录放入指定的变量中,达到Shrink每个DB的效果
fetch next from getDataBaseCursor into @databasename
while @@FETCH_STATUS = 0
begin
 declare @RecoveryModel nvarchar(20)
 declare @sql nvarchar(100)
 declare @logfileid int
 select @RecoveryModel= cast(DATABASEPROPERTYEX(name,'RECOVERY') as varchar(20)) from master..sysdatabases where name =@databasename
 IF @RecoveryModel<>'SIMPLE'
  begin
                EXEC ('ALTER DATABASE '+@databasename +' SET RECOVERY SIMPLE')
 end
 declare @dsql nvarchar(200)
 set @dsql=N'select @logfileid = file_id from ' + @databasename+ N'.sys.database_files where type_desc = ''LOG'''
 exec sp_executesql @dsql,N'@logfileid int output',@logfileid output
 EXEC('use '+@databasename+ ' DBCC SHRINKFILE( '+@logfileid+')')
fetch next from getDataBaseCursor into @databasename
end
--在游标操作的最后请不要忘记关闭游标,以使系统释放游标占用的资源
CLOSE getDataBaseCursor
--删除游标
DEALLOCATE getDataBaseCursor

转载于:https://www.cnblogs.com/tutuyforever/p/4797146.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值